天天看點

C#.Net 操作達夢資料庫Demo

1、使用vs建立控制台項目,類庫為 4.6.1

C#.Net 操作達夢資料庫Demo
 2、使用NuGet 引入 達夢資料提供器 DmProvider 
C#.Net 操作達夢資料庫Demo
安裝DmProvider 後的變化
C#.Net 操作達夢資料庫Demo
 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

 結果各種百du無果,後來想到到用官方資料庫自帶的DmProvider.dll 試試,如果你安裝了達夢資料庫,在這個目錄有個2.0版的,用這個就正常了!

C#.Net 操作達夢資料庫Demo

 運作結果如下,在安裝達夢資料庫的時候,把示例資料庫也安裝上去吧!

C#.Net 操作達夢資料庫Demo

 備注:在達夢資料庫安裝目錄有個文本說明檔案:

D:\dmdbms\drivers\dotNet\readme.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驅動加載到程式集中。
      

  

繼續閱讀