引言
Informix11与之前版本的Informix相比,新增了很多特性,如SQL语句跟踪、非阻断的检查点、SDS辅节点、星型连接、自动存储扩展、图形界面的管理工具OAT等,并且在性能上有了很大的提升。另外,由于Informix版本7、9、10已进入EOS(EndOfSupport)状态,所以很多Informix用户纷纷选择将Informix升级到版本11。
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数据库的问题,在通过研究后发现了可以通过多种方式实现,我选择的是通过IBMInformix.NETProvider。该方式需要引用IBM.Data.Informix.dll。
usingIBM.Data.Informix; usingSystem;7 namespaceInformixLinkTest { classProgram { staticvoidMain(string[]args) { try { //Openaconnection IfxConnectionconn=newIfxConnection( "Host=127.0.0.1;Service=9098;" +"Server=informixserver;Database=MyDatabase;" +"UserID=informix;password=MyPassword;db_locale=en_us.819" ); conn.Open(); IfxDataReaderrd; using(IfxCommandcmd=conn.CreateCommand()) { cmd.CommandText="select*fromsimpletable"; rd=cmd.ExecuteReader(); rd.Read(); do { if(rd.HasRows) { ///Assumingthetablehastwocolumns Console.WriteLine("{0}",rd[0]); } }while(rd.Read()); } conn.Close(); } catch(IfxExceptione) { Console.WriteLine(e.ToString()); Console.ReadLine(); } } }
在调试过程中会发现出现异常(System.DllNotFoundException:“无法加载DLL“IfxDotNetIntrinsicModule.dll”:找不到指定的模块。(异常来自HRESULT:0x8007007E)。”),具体如图:
通过提示可以看到找不到IfxDotNetIntrinsicModule.dll,我通过在安装Informix数据库的路径中找到了这个包放到了bin文件夹下后
就能正常运行了。
另一个问题就是在连接串中最开始db_locale的值我是给的utf8,按照这个也会出现异常情况,异常代码为(ERROR[HY000][Informix.NETprovider][Informix]Databaselocaleinformationmismatch.),截图如下:
最后将其设置为db_locale=en_us.819后就可正常连接到informix数据库。
上述就是C#学习教程:C#连接Informix数据库的问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/903925.html