C#.Net 操作达梦数据库Demo

摘要:
DmProvider可以在.NET框架和NETCore框架下使用,NETCore框架下需要用户安装System.Text.Encoding.CodePages包或者直接以NUGET包的形式安装DmProvider,可以自动依赖的System.Text.Encoding.CodePages包其中EFDmProvider是支持EntityFramework框架的驱动,它与数据库交互的部分由DmProvider完成,所以如果程序中需要使用EFDmProvider,需要同时引用DmProviderDmConnect是达梦提供给VS的DDEX驱动,它也引用了DmProvider。EFDmProvider6.1.3-net40文件夹中是基于EntityFramework6.1.3及.Net4.0的EFDmProvider2.0版本。DmConnect文件夹中是DmConnect驱动及所需文件。

1、使用vs创建控制台项目,类库为 4.6.1

C#.Net 操作达梦数据库Demo第1张

2、使用NuGet 引入 达梦数据提供器 DmProvider

C#.Net 操作达梦数据库Demo第2张

安装DmProvider 后的变化

C#.Net 操作达梦数据库Demo第3张

3、具体代码

using System;
using Dm;

namespace ConsoleApp1
{
    class Program
    {
        //返回结果
        private static int ret = 1;
        static DmConnection cnn = new DmConnection();

        static void Main(string[] args)
        {
            try
            {
                cnn.ConnectionString = "Server=localhost; User Id=SYSDBA; PWD=SYSDBA";
                cnn.Open();
                Program program = new Program();
                program.TestFunc();
                cnn.Close();


            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        public void TestFunc()
        {
            DmCommand command = new DmCommand();
            command.Connection = cnn;
            try
            {
                string a, b, c;
                command.CommandText = "select * from Production.Product;";
                var reader = command.ExecuteReader();
                while (reader.Read())
                {
                    a = reader.GetString(0);
                    b = reader.GetString(1);
                    c = reader.GetString(2);

                    Console.WriteLine("Name:" + a);
                    Console.WriteLine("Author: " + b);
                    Console.WriteLine("Publisher: " + c);
                    Console.WriteLine("-----------------------------");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                ret = 0;

            }
        }
    }
}

4、运行,报错!!!

C#.Net 操作达梦数据库Demo第4张

结果各种百du无果,后来想到到用官方数据库自带的DmProvider.dll 试试,如果你安装了达梦数据库,在这个目录有个2.0版的,用这个就正常了!

C#.Net 操作达梦数据库Demo第5张

运行结果如下,在安装达梦数据库的时候,把示例数据库也安装上去吧!

C#.Net 操作达梦数据库Demo第6张

备注:在达梦数据库安装目录有个文本说明文件:

D:dmdbmsdriversdotNet eadme.txt

达梦.Net驱动分为DmProvider、EFDmProvider、EFCore.Dm、DmDialect和DmConnect。

DmProvider可以在.NET框架和NETCore框架下使用,NETCore框架下需要用户安装System.Text.Encoding.CodePages包或者直接以NUGET包的形式安装DmProvider,可以自动依赖的System.Text.Encoding.CodePages包

其中EFDmProvider是支持Entity Framework框架的驱动,它与数据库交互的部分由DmProvider完成,所以如果程序中需要使用EFDmProvider,需要同时引用DmProvider
DmConnect是达梦提供给VS的DDEX驱动,它也引用了DmProvider。

EFCore.Dm已支持EFCore2.1版本

DmDialect方言包有for Nhibernate3、for Nhibernate4、for Nhibernate5分别对应NET3.5、NET4、NET4.6.1;用户可根据开发环境选择对应的方言包版本;
Nhibernate中App.config配置要求:
1、驱动名称
<property name="connection.driver_class">NHibernate.Driver.DmDriver, DmDialect, Version=1.0.0.0, Culture=neutral, PublicKeyToken=072d25982b139bf8</property> 
2、方言包名称
<property name="dialect">NHibernate.Dialect.DmDialect, DmDialect, Version=1.0.0.0, Culture=neutral, PublicKeyToken=072d25982b139bf8</property>


文件结构说明:
DmProvider文件夹中是完整的DmProvider驱动文件。使用DmProvider的DmBulkCopy对象,需要引用dmfldr_dll.dll以及此dll依赖的其他库。
EFDmProvider文件夹中是老版本的EFDmProvider,已不再更新版本。
EFDmProvider6.1.3-net40文件夹中是基于EntityFramework6.1.3及.Net4.0的EFDmProvider 2.0版本。
EFDmProvider6.1.3-net45文件夹中是基于EntityFramework6.1.3及.Net4.5的EFDmProvider 2.0版本。
DmConnect文件夹中是DmConnect驱动及所需文件。
DmDialect文件夹是不同版本NHibernate的方言包
gacutil.exe是全局程序集缓存工具,使用它可以将.Net驱动加载到程序集中。

免责声明:文章转载自《C#.Net 操作达梦数据库Demo》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redhat修改系统时间VMware 15.5虚拟机安装群晖NAS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端与后端的数据交互(jquery ajax+python flask)

前端与后端的数据交互,最常用的就是GET、POST,比较常用的用法是:提交表单数据到后端,后端返回json 前端的数据发送与接收1)提交表单数据2)提交JSON数据 后端的数据接收与响应1)接收GET请求数据2)接收POST请求数据3)响应请求 前端的数据发送与接收 1. 提交表单数据 # GET请求 var data = { "name":...

用python读取带密码的excel文件中的数据

用python读取带密码的excel文件中的数据,程序代码如下: #filename:readingxls.py ''' 此程序的作用为:用python读取带密码的excel文件中的数据。 首先通过pip安装xlrd第三方库 pip3 install xlrd 请输入excel文件路径:D:x1.xls ''' import xlrd path=input...

access数据库删除两个日期之间 的数据 SQL语句

sql2005中sql语句为 DELETE FROM table WHERE ([date] BETWEEN '2011 - 9 - 19 0 : 00 : 00 ' AND '2011 - 9 - 20 0 : 00 : 00') 词语法是正确的,发现再access中没有影响相关行数,解决方法在日期前后加上#,语法为: delete from table...

从excel表中生成批量SQL,将数据录入到数据库中

excel表格中有许多数据,需要将数据导入数据库中,又不能一个一个手工录入,可以生成SQL,来批量操作。      1.首先在第二行的H列,插入函数:=CONCATENATE("INSERT INTO `book` (`bookid`, `title`,  `volume`, `author`, `urlpdf` ) VALUES ('",A2,"'...

原创:python的requests.post()向后端传递数据,数组结构需将python数据结果转换成JSON

 针对采集来的数据,用requests.post()向后端传递 如果是python数据结构如数组,需要转换成为JSON对象,否则后端容易解析不成后端集合的对象结构 re 一:python做为前端请求requests.post() ''' 后台接收是数组 ''' dataInfoList = [...

数据仓库架构设计的概念

1、数据仓库所处环节 在一个成体系、结构化的数据应用场景下,数据和处理有四个层次: 操作层、数据仓库层、部门/数据集市层、个体层。 操作层 操作层是指为具体业务提供实时响应的各个业务系统,比如常见的订单系统、ERP、用户中心等等具体业务系统,这些系统中的数据一般都是存入关系型数据库。它们是数据的来源。 数据仓库 数据仓库收集操作层各个业务系统中的数据,进...