一、环境搭建
1.安装Visual Studio2022
VS 2017及以上版本已经内置了NuGet,不需要再下载
Nuget是.NET程序包管理工具(类似linux下的npm等),程序员可直接用简单的命令行(或VS)下载包。好处:
(1)避免类库版本不一致带来的问题。GitHub是管理源代码的,这个是管理生成的类库/包的。
(2)可自动处理类库依赖:
(3)可指定下载历史版本: install-package name –version 1.0.2
(4)可部署私有包服务器: Overview of Hosting Your Own NuGet Feeds | Microsoft Docs
2.达梦8数据库安装
二、新建项目
1.创建项目
2.使用 .NET Core 的桌面开发
安装了具有 .NET 桌面开发工作负载的 Visual Studio 2022 版本 17.0.0 预览版。 选择此工作负载时,将自动安装 .NET 6 SDK
基于c#开发.net应用
3.配置项目
4.选择框架版本
5. 使用NuGet 引入 达梦数据提供器 DmProvider
6.编辑Program.cs文件
三、编写代码
DM .NET Provider使用DMConnection对象提供与DM数据库的连接。DM .NET Provider 支持连接字符串格式。
static DmConnection cnn = new DmConnection();
连接数据库
cnn.ConnectionString = "Server=192.168.124.145; UserId=SYSDBA; PWD=dmsysdba2022";
调用增删改查和大字段处理方法
Program demo = new Program();
//demo.AddFunc(); //新增
//demo.DeleteFunc(); //删除
//demo.UpdateFunc(); //修改
demo.QueryFunc(); //查询
//demo.BinaryFunc(); //大字段处理
//新增方法
public void AddFunc()
{
var command = cnn.CreateCommand();
try
{
command.CommandText = "INSERT INTO TEST.T_USER(ID,NAME,PHONE) VALUES (39,'三国演义','176000000')";
command.ExecuteNonQuery();
string a, b, c;
command.CommandText = "SELECT ID,NAME,PHONE FROM TEST.T_USER; ";
var reader = command.ExecuteReader();
while (reader.Read())
{
a = reader.GetString(0);
b = reader.GetString(1);
c = reader.GetString(2);
//d = reader.GetString(3);
Console.WriteLine("ID:" + a);
Console.WriteLine("NAME:" + b);
Console.WriteLine("PHONE:" + c);
// Console.WriteLine("EMALL:" + d);
Console.WriteLine("-------------------");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
ret = 0;
}
}
//删除方法
public void DeleteFunc()
{
var command = cnn.CreateCommand();
try
{
command.CommandText = "DELETE FROM TEST.T_USER WHERE ID = 99";
command.ExecuteNonQuery();
string a, b, c;
command.CommandText = "SELECT ID,NAME,PHONE FROM TEST.T_USER; ";
var reader = command.ExecuteReader();
while (reader.Read())
{
a = reader.GetString(0);
b = reader.GetString(1);
c = reader.GetString(2);
//d = reader.GetString(3);
Console.WriteLine("ID:" + a);
Console.WriteLine("NAME:" + b);
Console.WriteLine("PHONE:" + c);
//Console.WriteLine("EMALL:" + d);
Console.WriteLine("-------------------");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
ret = 0;
}
}
//修改方法
public void UpdateFunc()
{
var command = cnn.CreateCommand();
try
{
command.CommandText = "UPDATE TEST.T_USER SET NAME = 'HAP' WHERE ID = 11";
command.ExecuteNonQuery();
string a, b, c;
command.CommandText = "SELECT ID,NAME,PHONE FROM TEST.T_USER; ";
var reader = command.ExecuteReader();
while (reader.Read())
{
a = reader.GetString(0);
b = reader.GetString(1);
c = reader.GetString(2);
//d = reader.GetString(3);
Console.WriteLine("ID:" + a);
Console.WriteLine("NAME:" + b);
Console.WriteLine("PHONE:" + c);
//Console.WriteLine("EMALL:" + d);
Console.WriteLine("-------------------");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
ret = 0;
}
}
//查询方法
public void QueryFunc()
{
DmCommand command = new DmCommand();
command.Connection = cnn;
try
{
string a, b, c;
command.CommandText = "SELECT NAME,PHONE,EMAIL FROM TEST.T_USER; ";
DmDataReader reader = command.ExecuteReader();
while (reader.Read())
{
a = reader.GetString(0);
b = reader.GetString(1);
c = reader.GetString(2);
Console.WriteLine("NAME:" + a);
Console.WriteLine("PHONE:" + b);
Console.WriteLine("EMAIL:" + c);
Console.WriteLine("-------------------");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
ret = 0;
}
}
//大字段插入方法
public void BinaryFunc()
{
DmCommand command = new DmCommand();
command.Connection = cnn;
try
{
FileInfo fi = new FileInfo(@"C:\Users\黄爱萍\Desktop\微信图片_20220328144544.jpg");
FileStream fs = fi.OpenRead();
int nBytes = (int)fs.Length;
byte[] dataArray = new byte[nBytes];
fs.Read(dataArray, 0, nBytes);
fs.Close();
//command.CommandText = "UPDATE TEST.PRODUCT SET PHOTO = :PHOTO WHERE PRODUCTID = 3"; //更新
command.CommandText = "INSERT INTO TEST.PRODUCT(NAME,AUTHOR,PHOTO) VALUES ('HAP','达梦',:PHOTO)"; //新增
DmParameter param1 = new DmParameter(":PHOTO", DmDbType.Binary);
command.Parameters.Add(param1);
param1.Value = dataArray;
command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
ret = 0;
}
}
源码:
链接:https://pan.baidu.com/s/1zbEFudUnnujExyd0ylTkMA
提取码:gjo6
达梦社区地址:https://eco.dameng.com