C#連接Informix數(shù)據(jù)庫(kù)的問(wèn)題
引言
Informix 11 與之前版本的 Informix 相比,新增了很多特性,如 SQL 語(yǔ)句跟蹤、非阻斷的檢查點(diǎn)、SDS 輔節(jié)點(diǎn)、星型連接、自動(dòng)存儲(chǔ)擴(kuò)展、圖形界面的管理工具 OAT 等,并且在性能上有了很大的提升。另外,由于 Informix 版本 7、9、10 已進(jìn)入 EOS (End Of Support) 狀態(tài),所以很多 Informix 用戶紛紛選擇將 Informix 升級(jí)到版本 11。
Informix 數(shù)據(jù)庫(kù)升級(jí)簡(jiǎn)介
Informix 數(shù)據(jù)庫(kù)升級(jí)是指把使用的 Informix 數(shù)據(jù)庫(kù)從低版本轉(zhuǎn)化為高版本。對(duì) Informix 數(shù)據(jù)庫(kù)進(jìn)行升級(jí)是一項(xiàng)系統(tǒng)工程,包括升級(jí)前的測(cè)試、升級(jí)前的檢查、升級(jí)操作過(guò)程、升級(jí)后的測(cè)試、升級(jí)后的調(diào)優(yōu)等。
Informix 數(shù)據(jù)庫(kù)升級(jí)有兩種類(lèi)型:in-place 和 non-in-place。In-place 升級(jí)中,新版本的 Informix 使用的數(shù)據(jù)文件與舊版本的 Informix 相同,數(shù)據(jù)庫(kù)管理員無(wú)需導(dǎo)出導(dǎo)入數(shù)據(jù)。Non-in-place 升級(jí)中,新版本的 Informix 使用的數(shù)據(jù)文件與舊版本的 Informix 不同,數(shù)據(jù)庫(kù)管理員需要導(dǎo)出導(dǎo)入數(shù)據(jù)。
In-place 升級(jí)比較簡(jiǎn)單,升級(jí)操作時(shí)間短。non-in-place 升級(jí)比較復(fù)雜,升級(jí)操作時(shí)間長(zhǎng),所需的硬件資源多,風(fēng)險(xiǎn)較小。在一些情況下我們只能使用 non-in-place 升級(jí),例如改變了硬件或操作系統(tǒng)。
兩種類(lèi)型的 Informix 數(shù)據(jù)庫(kù)升級(jí)的示意圖如圖 1 所示。
圖 1. 兩種類(lèi)型的 Informix 數(shù)據(jù)庫(kù)升級(jí)的示意圖
兩種類(lèi)型的 Informix 數(shù)據(jù)庫(kù)升級(jí)的示意圖
正文
最近在工作中遇到了需要連接Informix數(shù)據(jù)庫(kù)的問(wèn)題,在通過(guò)研究后發(fā)現(xiàn)了可以通過(guò)多種方式實(shí)現(xiàn),我選擇的是通過(guò)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(); } } }
在調(diào)試過(guò)程中會(huì)發(fā)現(xiàn)出現(xiàn)異常(System.DllNotFoundException:“無(wú)法加載 DLL“IfxDotNetIntrinsicModule.dll”: 找不到指定的模塊。 (異常來(lái)自 HRESULT:0x8007007E)?!保?,具體如圖:
通過(guò)提示可以看到找不到IfxDotNetIntrinsicModule.dll,我通過(guò)在安裝Informix數(shù)據(jù)庫(kù)的路徑中找到了這個(gè)包放到了bin文件夾下后
就能正常運(yùn)行了。
另一個(gè)問(wèn)題就是在連接串中最開(kāi)始db_locale的值我是給的utf8,按照這個(gè)也會(huì)出現(xiàn)異常情況,異常代碼為(ERROR [HY000] [Informix .NET provider][Informix]Database locale information mismatch. ),截圖如下:
最后將其設(shè)置為db_locale=en_us.819后就可正常連接到informix數(shù)據(jù)庫(kù)。
總結(jié)
到此這篇關(guān)于C#連接Informix數(shù)據(jù)庫(kù)的問(wèn)題的文章就介紹到這了,更多相關(guān)C#連接Informix數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C#連接Oracle數(shù)據(jù)庫(kù)使用Oracle.ManagedDataAccess.dll
- C#實(shí)現(xiàn)連接SQL Server2012數(shù)據(jù)庫(kù)并執(zhí)行SQL語(yǔ)句的方法
- C#連接到sql server2008數(shù)據(jù)庫(kù)的實(shí)例代碼
- C#連接加密的Sqlite數(shù)據(jù)庫(kù)的方法
- C#程序連接數(shù)據(jù)庫(kù)及讀取數(shù)據(jù)庫(kù)中字段的簡(jiǎn)單方法總結(jié)
- C#編程實(shí)現(xiàn)連接SQL SERVER數(shù)據(jù)庫(kù)實(shí)例詳解
- C#連接數(shù)據(jù)庫(kù)和更新數(shù)據(jù)庫(kù)的方法
- C#連接mysql數(shù)據(jù)庫(kù)完整實(shí)例
相關(guān)文章
C#判斷一個(gè)類(lèi)是否實(shí)現(xiàn)了某個(gè)接口3種實(shí)現(xiàn)方法
這篇文章主要介紹了C#判斷一個(gè)類(lèi)是否實(shí)現(xiàn)了某個(gè)接口3種實(shí)現(xiàn)方法,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06C#實(shí)例代碼之抽獎(jiǎng)升級(jí)版可以經(jīng)表格數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),抽獎(jiǎng)設(shè)置,補(bǔ)抽
這篇文章主要介紹了C#實(shí)例代碼之抽獎(jiǎng)升級(jí)版可以經(jīng)表格數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),抽獎(jiǎng)設(shè)置,補(bǔ)抽 的相關(guān)資料,需要的朋友可以參考下2016-01-01C#數(shù)值轉(zhuǎn)換-顯式數(shù)值轉(zhuǎn)換表(參考)
就是在將一種類(lèi)型轉(zhuǎn)換成另外一種類(lèi)型時(shí),需要額外的代碼來(lái)完成這種轉(zhuǎn)換。2013-04-04C#連接Informix數(shù)據(jù)庫(kù)的問(wèn)題
這篇文章主要介紹了C#連接Informix數(shù)據(jù)庫(kù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03