主題介紹
本文主要介紹Net 5.0框架下如何連接瀚高數(shù)據(jù)庫。
驅(qū)動介紹
鏈接:https://pan.baidu.com/s/1xuz6uJz0utRgKWecXhpOiA?pwd=o0tj
瀚高數(shù)據(jù)庫安裝完畢后,自帶數(shù)據(jù)庫驅(qū)動,其位置如下:

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

解壓后,可以看到

其中列出了 net5.0、netcoreapp3.1、netstandard2.0、netstanddard2.1和Nhgb.EntityFrameworkcore.HGDB.dll 等幾個文件,根據(jù)開發(fā)環(huán)境和框架,從中選擇適用的驅(qū)動。
Net5.0
.NET 5.0 是.NET Framework和.NET Core核心的結(jié)合,旨在統(tǒng)一.NET平臺,微軟將其描述為 “.NET的未來”。
.NET 5.0 是繼 3.1 之后 .NET Core 的下一個主要版本。為了避免產(chǎn)品線的混亂,微軟開始統(tǒng)一產(chǎn)品線,關(guān)閉了 .NET Framework 這條產(chǎn)品線,并將 .NET Core 產(chǎn)品線更名為 .NET。為了避免與 .NET Framework 4.x 版本號沖突,.NET 產(chǎn)品線直接從版本號 5 開始,即 .NET 5.0,并于2020這一年 11 月正式發(fā)布。
目前已經(jīng)發(fā)布了最新版本.NET8.0,在 .NET Conf 2023 上正式發(fā)布的。

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


綜上所述:使用 Net5.0 框架的項目,首選引用 net5.0 文件中的驅(qū)動。其他版本的 Net 框架配合對應(yīng)版本的驅(qū)動使用。
開發(fā)環(huán)境搭建
軟件 |
版本 |
HGDB |
安全版V4、企業(yè)版v6及以上版本 |
visual studio |
2022 |
添加引用

目標(biāo)框架

示例代碼
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>返回一個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
Textprivate 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é)果演示
初始界面:

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

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

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

經(jīng)測試,在6.0、7.0、8.0的場景下,本示例均可正常運(yùn)行。
需要注意的是,當(dāng)目標(biāo)框架不存在時,vs2022會提示需要安裝,點(diǎn)擊確定后,會自動下載。完了安裝即可。

引用其他版本驅(qū)動的表現(xiàn)
引用 netstanddard2.0
需要引入的依賴
包名 |
Microsoft.Bcl.AsyncInterfaces |

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

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

引入 net6.0
生成解決方案報錯

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

引入Microsoft.Extensions.Logging.Abstractions
的6.0.0
版本后,可正常使用
引入 net7.0
啟動應(yīng)用報錯

引入Microsoft.Extensions.Logging.Abstractions
的6.0.0
版本后,可正常使用
引入 net8.0
報錯及操作步驟同《引入 net7.0》