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