主题介绍
本文主要介绍Net 5.0框架下如何连接瀚高数据库。
驱动介绍
链接:https://pan.baidu.com/s/1xuz6uJz0utRgKWecXhpOiA?pwd=o0tj
瀚高数据库安装完毕后,自带数据库驱动,其位置如下:

其中 DotNet 文件夹 即为 Net 程序使用的驱动包,进入目录

解压后,可以看到

其中列出了 net5.0、netcoreapp3.1、netstandard2.0、netstanddard2.1和Nhgb.EntityFrameworkcore.HGDB.dll 等几个文件,根据开发环境和框架,从中选择适用的驱动。
Net5.0
.NET 5.0 是.NET Framework和.NET Core核心的结合,旨在统一.NET平台,微软将其描述为 “.NET的未来”。
.NET 5.0 是继 3.1 之后 .NET Core 的下一个主要版本。为了避免产品线的混乱,微软开始统一产品线,关闭了 .NET Framework 这条产品线,并将 .NET Core 产品线更名为 .NET。为了避免与 .NET Framework 4.x 版本号冲突,.NET 产品线直接从版本号 5 开始,即 .NET 5.0,并于2020这一年 11 月正式发布。
目前已经发布了最新版本.NET8.0,在 .NET Conf 2023 上正式发布的。

根据 微软官方文档的介绍.NET Standard - .NET | Microsoft Learn的介绍


综上所述:使用 Net5.0 框架的项目,首选引用 net5.0 文件中的驱动。其他版本的 Net 框架配合对应版本的驱动使用。
开发环境搭建
软件 |
版本 |
HGDB |
安全版V4、企业版v6及以上版本 |
visual studio |
2022 |
添加引用

目标框架

示例代码
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> /// 创建数据库连接 /// </summary> /// <returns>返回一个NhgdbConnection型变量</returns> public NhgdbConnection GetConn() { NhgdbConnection sqlConn = new NhgdbConnection(strConnectionString); sqlConn.Open();
return sqlConn; } /// <summary> /// 执行查询SQL操作,返回查询资料结果集 /// </summary> /// <param name="sql">Sql语句</param> /// <returns>资料结果集</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; }
|
结果演示
初始界面:

加载数据集:

选中数据:

在Net5.0+场景中的表现

经测试,在6.0、7.0、8.0的场景下,本示例均可正常运行。
需要注意的是,当目标框架不存在时,vs2022会提示需要安装,点击确定后,会自动下载。完了安装即可。

引用其他版本驱动的表现
引用 netstanddard2.0
需要引入的依赖
包名 |
Microsoft.Bcl.AsyncInterfaces |

引用 netstanddard2.1
不需引入其他依赖,即可正常运行。

引用 netcoreapp3.1
不需引入其他依赖,即可正常运行。

引入 net6.0
生成解决方案报错

将项目目标框架改为.NET 7.0
后可正常生成解决方案,启动应用报错

引入Microsoft.Extensions.Logging.Abstractions
的6.0.0
版本后,可正常使用
引入 net7.0
启动应用报错

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