因此,当我试图连接到DB2数据库时,我得到了一个描述性很好的错误消息“Invalid Argument”。命名=系统;错误=已满;提示=否”
由于jdbc连接工作正常,我知道这是Db2.net连接器的问题。但是错误消息“无效参数”挫败了诊断从哪里开始的任何努力。
string connStr = "server=server;uid=user;pwd=password";
using(DB2Connection conn=new DB2Connection(connStr))
{
conn.Open();
//System.ArgumentException: Invalid argument
// at IBM.Data.DB2.DB2ConnPool.ReplaceConnectionStringParms(DB2Connection connection, String szValue, DB2ConnSettings& pSettings, DB2ConnSettingsInternal& pSettingsInternal, Boolean bAttach)
// at IBM.Data.DB2.DB2Connection.set_ConnectionString(String value)
// at IBM.Data.DB2.DB2Connection..ctor(String connectionString)
// at AuroraDAL_ConnectionTests.DB2ConnectionTests.try1() in C:\Projects\...\DB2ConnectionTests.cs:line 31
// at AuroraDAL_ConnectionTests.DB2ConnectionTests.Execute() in C:\Projects\...\DB2ConnectionTests.cs:line 19
// at AuroraDAL_ConnectionTests.Program.Main(String[] args) in C:\Projects\...\Program.cs:line 20
}
使用DB2.net连接器程序文件目录中的testconn20.exe,我尝试了几个选项,首先使用上面的第一个连接字符串,然后将速记键更改为它们的普通值(uid更改为用户id,pwd更改为密码,等等)。
testconn20 server=server;database=database;user id=userid;password=password
的结果最终会传回相同的“无效参数”例外状况:
Step 1: Printing version info
.NET Framework version: 2.0.50727.5448
64-bit
DB2 .NET provider version: 9.0.0.2
Capability bits: ALLDEFINED
Build: 20090522
Factory for invairant name IBM.Data.DB2 verified
Elapsed: 0.089982
Step 2: Connecting using "server=-------;database=------;userid=------;password=------"
Invalid Argument Exception:
Connection string should be of the type 'Database=db2db; Server=mymachine:60000; User ID=db2user; Password=xxxxxxxx
Test failed.
有没有人对DB2和C#有什么建议,我做错了什么?
3条答案
按热度按时间7xzttuei1#
我没有DB2方面的经验,但是仔细查看您的代码后,我注意到您没有在连接字符串的Server=中指定Database=和PortNumber
gjmwrych2#
看起来IBM的网站并没有引导你到他们的.net数据连接器的最新和最好的部分。这个问题主要是通过彻底寻找更新和找到他们的“修复中心”来解决的。这是他们保存更新和热修复的地方。但是得到正确的软件包并不容易。
v6ylcynt3#
最后,我创建了正确的连接字符串:
有关更多参数,请参阅:DB2连接.连接字符串属性https://www.ibm.com/docs/en/db2/9.7?topic=properties-connectionstring