主题介绍

本文主要介绍Net Framework框架下如何连接瀚高数据库。

驱动介绍

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

瀚高数据库安装完毕后,自带数据库驱动,其位置如下:(这里以V4.5.8为例,实际使用中请参考具体版本)

image

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

image

解压后,可以看到

image

其中列出了 net5.0netcoreapp3.1netstandard2.0netstanddard2.1Nhgb.EntityFrameworkcore.HGDB.dll 等几个文件,根据开发环境和框架,从中选择适用的驱动。

Net Framework

.NET Framework1.0 主要提供了面向 Windows 桌面(Windows Form)和服务器(ASP.NET Web Forms)的基础开发框架。目前最新版本为 .NET Framework 4.8,这也是.NET Frameork 的最后一个版本。

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

image

[^*]: .NET Framework 不支持 .NET Standard 2.1。

综上所述:使用 Net Framework 框架的项目,首选引用 netstandard2.0 文件中的驱动。

[^注意:]: NET Framework的版本必须是4.6.1以后的版本

开发环境搭建

软件 版本
HGDB 安全版V4、企业版v6及以上版本
visual studio 2022

添加引用

image

需要引入的依赖(排序不分先后)

包名
System.Memory
System.Runtime.CompilerServices.Unsafe
System.Text.Json
System.Threading.Channels
System.Buffers
Microsoft.Bcl.AsyncInterfaces

目标框架

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>
/// 创建数据库连接
/// </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

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;
}

结果演示

初始界面:

image

加载数据集:

image

选中数据:

image

引用其他版本驱动的表现

引用 netstanddard2.1

image

引用 netcoreapp3.1

image

引用 net5.0

image

引用 net6.0

image

引用 net7.0

image

引用 net8.0

image