C#連接Informix數(shù)據(jù)庫的問題
引言
Informix 11 與之前版本的 Informix 相比,新增了很多特性,如 SQL 語句跟蹤、非阻斷的檢查點(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ù)庫升級(jí)簡介
Informix 數(shù)據(jù)庫升級(jí)是指把使用的 Informix 數(shù)據(jù)庫從低版本轉(zhuǎn)化為高版本。對 Informix 數(shù)據(jù)庫進(jìn)行升級(jí)是一項(xiàng)系統(tǒng)工程,包括升級(jí)前的測試、升級(jí)前的檢查、升級(jí)操作過程、升級(jí)后的測試、升級(jí)后的調(diào)優(yōu)等。
Informix 數(shù)據(jù)庫升級(jí)有兩種類型:in-place 和 non-in-place。In-place 升級(jí)中,新版本的 Informix 使用的數(shù)據(jù)文件與舊版本的 Informix 相同,數(shù)據(jù)庫管理員無需導(dǎo)出導(dǎo)入數(shù)據(jù)。Non-in-place 升級(jí)中,新版本的 Informix 使用的數(shù)據(jù)文件與舊版本的 Informix 不同,數(shù)據(jù)庫管理員需要導(dǎo)出導(dǎo)入數(shù)據(jù)。
In-place 升級(jí)比較簡單,升級(jí)操作時(shí)間短。non-in-place 升級(jí)比較復(fù)雜,升級(jí)操作時(shí)間長,所需的硬件資源多,風(fēng)險(xiǎn)較小。在一些情況下我們只能使用 non-in-place 升級(jí),例如改變了硬件或操作系統(tǒng)。
兩種類型的 Informix 數(shù)據(jù)庫升級(jí)的示意圖如圖 1 所示。
圖 1. 兩種類型的 Informix 數(shù)據(jù)庫升級(jí)的示意圖

兩種類型的 Informix 數(shù)據(jù)庫升級(jí)的示意圖
正文
最近在工作中遇到了需要連接Informix數(shù)據(jù)庫的問題,在通過研究后發(fā)現(xiàn)了可以通過多種方式實(shí)現(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)試過程中會(huì)發(fā)現(xiàn)出現(xiàn)異常(System.DllNotFoundException:“無法加載 DLL“IfxDotNetIntrinsicModule.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)?!保?,具體如圖:

通過提示可以看到找不到IfxDotNetIntrinsicModule.dll,我通過在安裝Informix數(shù)據(jù)庫的路徑中找到了這個(gè)包放到了bin文件夾下后

就能正常運(yùn)行了。
另一個(gè)問題就是在連接串中最開始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ù)庫。
總結(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#實(shí)現(xiàn)連接SQL Server2012數(shù)據(jù)庫并執(zhí)行SQL語句的方法
- C#連接到sql server2008數(shù)據(jù)庫的實(shí)例代碼
- C#連接加密的Sqlite數(shù)據(jù)庫的方法
- C#程序連接數(shù)據(jù)庫及讀取數(shù)據(jù)庫中字段的簡單方法總結(jié)
- C#編程實(shí)現(xiàn)連接SQL SERVER數(shù)據(jù)庫實(shí)例詳解
- C#連接數(shù)據(jù)庫和更新數(shù)據(jù)庫的方法
- C#連接mysql數(shù)據(jù)庫完整實(shí)例
相關(guān)文章
C# byte轉(zhuǎn)為有符號(hào)整數(shù)實(shí)例
這篇文章主要介紹了C# byte轉(zhuǎn)為有符號(hào)整數(shù)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
C#設(shè)計(jì)模式之Visitor訪問者模式解決長隆歡樂世界問題實(shí)例
這篇文章主要介紹了C#設(shè)計(jì)模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結(jié)合具體實(shí)例形式分析了C#使用訪問者模式解決長隆歡樂世界問題的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09
關(guān)于C#?調(diào)用Dll?傳遞字符串指針參數(shù)的問題
這篇文章主要介紹了C#?調(diào)用Dll傳遞字符串指針參數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
Unity3D使用鼠標(biāo)旋轉(zhuǎn)縮放平移視角
這篇文章主要為大家詳細(xì)介紹了Unity3D使用鼠標(biāo)旋轉(zhuǎn)縮放平移視角,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫漢字
這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)貨幣金額數(shù)字轉(zhuǎn)大寫漢字功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
C#實(shí)現(xiàn)Modbus通信功能的示例詳解
Modbus作為一種開放且廣泛采用的通信協(xié)議,在實(shí)現(xiàn)設(shè)備間數(shù)據(jù)交換方面發(fā)揮著至關(guān)重要的作用,它不僅支持多種物理層接口(如RS-232,?RS-485,?以及以太網(wǎng)),還因其簡單易用的特點(diǎn)而被大家所青睞,本文通過實(shí)際示例介紹如何在C#項(xiàng)目中輕松實(shí)現(xiàn)Modbus通信功能2024-11-11

