我们使用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