我們使用Informix數據庫,並使用ODBC成功地從.NET連接到它。我們正在使用的連接字符串是;Informix for .NET的連接字符串
DRIVER={IBM INFORMIX ODBC RIVER};
UID=username; PWD=password;
DATABASE=our_database;
HOST=devsrv01;
SERVER=devsrv01_tcp;
SERVICE=ids9tcp2;
PROTOCOL=onsoctcp;
CLIENT_LOCALE=en_US.CP1252;
DB_LOCALE=en_US.819;
我們想從ODBC更改和使用IBM的SDK和庫outlined on their site。
我們使用的代碼是;
string ConnectionString = "Database=our_database; Server=172.22.0.0:1528; UID=username; Password=password; ";
try
{
IfxConnection conn = new IfxConnection(ConnectionString);
conn.Open();
}
catch (IfxException ex)
{}
conn.Open()拋出異常;
ERROR [08001] [IBM] SQL30081N已檢測到通信錯誤。正在使用的通信協議:「TCP/IP」。正在使用通信API:「SOCKETS」。檢測到錯誤的位置:「172.22.0.0」。檢測錯誤的通信功能:「recv」。協議特定的錯誤代碼:「」,「」,「0」。 SQLSTATE = 08001
「啊哈!」你說。只需輸入「PROTOCOL=onsoctcp;
」但這會讓IfxConnection(ConnectionString);
命令拋出一個ArgumentException
。如果連接字符串包含任何無效的<field>=<value>
設置,則會拋出此異常。如果我把垃圾放入垃圾箱;在它引發相同的ArgumentException,這使得我認爲它不能識別協議(或PRO)字段。
(FYI)172.22.0.0爲devsrv01的IP和不結束0.0。
我試過的第一件事。它也表示使用「Protocol = onsoctcp;」 – 2009-03-04 16:36:08