使用C#怎么连接Informix数据库?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Informix 数据库升级简介
Informix 数据库升级是指把使用的 Informix 数据库从低版本转化为高版本。对 Informix 数据库进行升级是一项系统工程,包括升级前的测试、升级前的检查、升级操作过程、升级后的测试、升级后的调优等。
Informix 数据库升级有两种类型:in-place 和 non-in-place。In-place 升级中,新版本的 Informix 使用的数据文件与旧版本的 Informix 相同,数据库管理员无需导出导入数据。Non-in-place 升级中,新版本的 Informix 使用的数据文件与旧版本的 Informix 不同,数据库管理员需要导出导入数据。
In-place 升级比较简单,升级操作时间短。non-in-place 升级比较复杂,升级操作时间长,所需的硬件资源多,风险较小。在一些情况下我们只能使用 non-in-place 升级,例如改变了硬件或操作系统。
两种类型的 Informix 数据库升级的示意图如图 1 所示。
图 1. 两种类型的 Informix 数据库升级的示意图
两种类型的 Informix 数据库升级的示意图
正文
最近在工作中遇到了需要连接Informix数据库的问题,在通过研究后发现了可以通过多种方式实现,我选择的是通过IBM Informix .NET Provider。该方式需要引用IBM.Data.Informix.dll。
using IBM.Data.Informix; using System; 7 namespace InformixLinkTest { class Program { static void Main(string[] args) { try { // Open a connection IfxConnection conn = new IfxConnection( "Host=127.0.0.1;Service=9098;" + "Server=informixserver;Database=MyDatabase;" + "User ID=informix;password=MyPassword;db_locale=en_us.819" ); conn.Open(); IfxDataReader rd; using (IfxCommand cmd = conn.CreateCommand()) { cmd.CommandText = "select * from simpletable"; rd = cmd.ExecuteReader(); rd.Read(); do { if (rd.HasRows) { ///Assuming the table has two columns Console.WriteLine("{0}", rd[0]); } } while (rd.Read()); } conn.Close(); } catch (IfxException e) { Console.WriteLine(e.ToString()); Console.ReadLine(); } } }
在调试过程中会发现出现异常(System.DllNotFoundException:“无法加载 DLL“IfxDotNetIntrinsicModule.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”),具体如图:
通过提示可以看到找不到IfxDotNetIntrinsicModule.dll,我通过在安装Informix数据库的路径中找到了这个包放到了bin文件夹下后
就能正常运行了。
另一个问题就是在连接串中最开始db_locale的值我是给的utf8,按照这个也会出现异常情况,异常代码为(ERROR [HY000] [Informix .NET provider][Informix]Database locale information mismatch. ),截图如下:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。