我们正在使用 Informix 数据库,并使用 ODBC 从 .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 和库在他们的网站上概述了 http://www.ibm.com/developerworks/data/library/techarticle/dm-0510durity/index.html.
我们使用的代码是;
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() 抛出异常;
错误 [08001] [IBM] SQL30081N 检测到通信错误。使用的通信协议:“TCP/IP”。使用的通信 API:“SOCKETS”。检测到错误的位置:“172.22.0.0”。通信函数检测到错误:“recv”。协议特定错误代码:“", "”,“0”。SQLSTATE=08001
“啊哈!”你说。只需输入“PROTOCOL=onsoctcp;
“但这使得IfxConnection(ConnectionString);
命令抛出一个ArgumentException
。如果连接字符串包含任何无效的<field>=<value>
设置它会抛出此异常。如果我放入garbage=junk;它抛出相同的 ArgumentException ,这让我认为它无法识别协议(或 PRO)字段。
(仅供参考)172.22.0.0 是 devsrv01 的 IP,并且不以 0.0.0 结尾。
我最终发现答案是包括;
Persist Security Info=True;Authentication=Server;
别问我为什么。我只是让它发挥作用。
为大家+1 - 感谢您的帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)