亲宝软件园·资讯

展开

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数据库。

 

加载全部内容

相关教程
猜你喜欢
用户评论