C#连接Informix数据库
aimevous 人气:0最近在工作中遇到了需要连接Informix数据库的问题,在通过研究后发现了可以通过多种方式实现,我选择的是通过IBM Informix .NET Provider。该方式需要引用IBM.Data.Informix.dll。
1 using IBM.Data.Informix; 3 using System; 7 8 namespace InformixLinkTest 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 try 15 { 16 // Open a connection 17 IfxConnection conn = new IfxConnection( 18 "Host=127.0.0.1;Service=9098;" 19 + "Server=informixserver;Database=MyDatabase;" 20 + "User ID=informix;password=MyPassword;db_locale=en_us.819" 21 ); 22 conn.Open(); 23 IfxDataReader rd; 24 using (IfxCommand cmd = conn.CreateCommand()) 25 { 26 cmd.CommandText = "select * from simpletable"; 27 rd = cmd.ExecuteReader(); 28 rd.Read(); 29 do 30 { 31 if (rd.HasRows) 32 { 33 ///Assuming the table has two columns 34 Console.WriteLine("{0}", rd[0]); 35 } 36 37 } while (rd.Read()); 38 } 39 conn.Close(); 40 } 41 catch (IfxException e) 42 { 43 Console.WriteLine(e.ToString()); 44 Console.ReadLine(); 45 } 46 } 47 }
在调试过程中会发现出现异常(System.DllNotFoundException:“无法加载 DLL“IfxDotNetIntrinsicModule.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”),具体如图:,通过提示可以看到找不到IfxDotNetIntrinsicModule.dll,我通过在安装Informix数据库的路径中找到了这个包放到了bin文件夹下后
,就能正常运行了。
另一个问题就是在连接串中最开始db_locale的值我是给的utf8,按照这个也会出现异常情况,异常代码为(ERROR [HY000] [Informix .NET provider][Informix]Database locale information mismatch. ),截图如下:,最后将其设置为db_locale=en_us.819后就可正常连接到informix数据库。
加载全部内容