主題介紹

本文主要介紹Net 5.0框架下如何連接瀚高數(shù)據(jù)庫。

驅(qū)動(dòng)介紹

鏈接:https://pan.baidu.com/s/1xuz6uJz0utRgKWecXhpOiA?pwd=o0tj

瀚高數(shù)據(jù)庫安裝完畢后,自帶數(shù)據(jù)庫驅(qū)動(dòng),其位置如下:

image

其中 DotNet 文件夾 即為 Net 程序使用的驅(qū)動(dòng)包,進(jìn)入目錄

image

解壓后,可以看到

image

其中列出了 net5.0、netcoreapp3.1、netstandard2.0netstanddard2.1Nhgb.EntityFrameworkcore.HGDB.dll 等幾個(gè)文件,根據(jù)開發(fā)環(huán)境和框架,從中選擇適用的驅(qū)動(dòng)。

Net5.0

.NET 5.0 是.NET Framework和.NET Core核心的結(jié)合,旨在統(tǒng)一.NET平臺(tái),微軟將其描述為 “.NET的未來”

.NET 5.0 是繼 3.1 之后 .NET Core 的下一個(gè)主要版本。為了避免產(chǎn)品線的混亂,微軟開始統(tǒng)一產(chǎn)品線,關(guān)閉了 .NET Framework 這條產(chǎn)品線,并將 .NET Core 產(chǎn)品線更名為 .NET。為了避免與 .NET Framework 4.x 版本號(hào)沖突,.NET 產(chǎn)品線直接從版本號(hào) 5 開始,即 .NET 5.0,并于2020這一年 11 月正式發(fā)布。

目前已經(jīng)發(fā)布了最新版本.NET8.0,在 .NET Conf 2023 上正式發(fā)布的。

image

根據(jù) 微軟官方文檔的介紹.NET Standard - .NET | Microsoft Learn的介紹

  • netstandard2.0

image

  • netstandard2.1

image

綜上所述:使用 Net5.0 框架的項(xiàng)目,首選引用 net5.0 文件中的驅(qū)動(dòng)。其他版本的 Net 框架配合對(duì)應(yīng)版本的驅(qū)動(dòng)使用。

開發(fā)環(huán)境搭建

軟件 版本
HGDB 安全版V4、企業(yè)版v6及以上版本
visual studio 2022

添加引用

image

目標(biāo)框架

image

示例代碼

App.conf

Text
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
<connectionStrings>
<add name="ConnectionString" connectionString="Server=192.168.2.5;Port=5866;User Id=sysdba;Password=Hello@123;Database=highgo;"/>
</connectionStrings>
</configuration>

ConnectionManager.cs (僅為片段部分)

Text
/// <summary>
/// 取得連接字串
/// </summary>
private ConnectionManager()
{
strConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
}

/// <summary>
/// 取得連接字串
/// </summary>
/// <returns>連接字串</returns>
public string GetConnectionString()
{
return strConnectionString;
}

/// <summary>
/// 創(chuàng)建數(shù)據(jù)庫連接
/// </summary>
/// <returns>返回一個(gè)NhgdbConnection型變量</returns>
public NhgdbConnection GetConn()
{
NhgdbConnection sqlConn = new NhgdbConnection(strConnectionString);
sqlConn.Open();

return sqlConn;
}
/// <summary>
/// 執(zhí)行查詢SQL操作,返回查詢資料結(jié)果集
/// </summary>
/// <param name="sql">Sql語句</param>
/// <returns>資料結(jié)果集</returns>
public DataTable GetDataTable(string sql)
{
DataTable dt = new DataTable();

using (NhgdbConnection conn = new NhgdbConnection())
{
conn.ConnectionString = strConnectionString;
conn.Open();

NhgdbCommand sc = new NhgdbCommand(sql);
sc.Connection = conn;
sc.CommandTimeout = 0;

NhgdbDataAdapter adapter = new NhgdbDataAdapter(sc);

adapter.Fill(dt);
conn.Close();
}

return dt;
}

Form1.cs

Text
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
int a = dataGridView1.SelectedRows.Count;
if (a > 0)
{
txt_id.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
txt_name.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
txt_sex.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
txt_age.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
txt_grade.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
txt_addr.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
}

}

private void btn_load_Click(object sender, EventArgs e)
{
string sql = "select id,name,sex,age,grade,address from student order by id";
DataTable dt = ConnectionManager.CreateInstance().GetDataTable(sql);
dataGridView1.DataSource = dt;
}

結(jié)果演示

初始界面:

image

加載數(shù)據(jù)集:

image

選中數(shù)據(jù):

image

在Net5.0+場(chǎng)景中的表現(xiàn)

?

image

經(jīng)測(cè)試,在6.0、7.0、8.0的場(chǎng)景下,本示例均可正常運(yùn)行。

需要注意的是,當(dāng)目標(biāo)框架不存在時(shí),vs2022會(huì)提示需要安裝,點(diǎn)擊確定后,會(huì)自動(dòng)下載。完了安裝即可。

image

引用其他版本驅(qū)動(dòng)的表現(xiàn)

引用 netstanddard2.0

需要引入的依賴

包名
Microsoft.Bcl.AsyncInterfaces

image

引用 netstanddard2.1

不需引入其他依賴,即可正常運(yùn)行。

image

引用 netcoreapp3.1

不需引入其他依賴,即可正常運(yùn)行。

image

引入 net6.0

生成解決方案報(bào)錯(cuò)

image

將項(xiàng)目目標(biāo)框架改為.NET 7.0后可正常生成解決方案,啟動(dòng)應(yīng)用報(bào)錯(cuò)

image

引入Microsoft.Extensions.Logging.Abstractions6.0.0版本后,可正常使用

引入 net7.0

啟動(dòng)應(yīng)用報(bào)錯(cuò)

image

引入Microsoft.Extensions.Logging.Abstractions6.0.0版本后,可正常使用

引入 net8.0

報(bào)錯(cuò)及操作步驟同《引入 net7.0》