1、使用vs創建控制台項目,類庫為 4.6.1
2、使用NuGet 引入 達夢數據提供器 DmProvider
安裝DmProvider 后的變化
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、運行,報錯!!!
結果各種百du無果,后來想到到用官方數據庫自帶的DmProvider.dll 試試,如果你安裝了達夢數據庫,在這個目錄有個2.0版的,用這個就正常了!
運行結果如下,在安裝達夢數據庫的時候,把示例數據庫也安裝上去吧!
備注:在達夢數據庫安裝目錄有個文本說明文件:
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驅動加載到程序集中。