C#ADO.Net到db2 iseries - 连接无效

时间:2013-11-18 23:59:30

标签: c# sql ado.net db2-400

我在从C#ADO.Net程序连接到DB2 iSeries数据库时遇到问题。

我可以使用ClientAccess"来自iSeries的数据传输"从Windows框连接到DB2 / iSeries。工具,具有以下设置:

IBM i name: 192.168.0.1
User: VCT130
Passwd: pass
File name: CHGDG#VL/AREA(AREA)

它检索了23条记录。

我试图从下面概述的简单C#程序中访问相同的数据:

using IBM.Data.DB2.iSeries;
string conStr= "DataSource=192.168.0.1;UserID=VCT130;Password=pass;Naming=System;LibraryList=QIWS,CHGDG#VL,CHNNL#VL,CHVAT#VL;DefaultCollection=QIWS;" ;
string sql= "SELECT * from CHGDG#VL/Area;" ;  // ALSO TRIED ...from CHGDG#VL/Area(AREA);
iDB2Connection conn = new iDB2Connection(conStr);
iDB2Command cmd = new iDB2Command(sql, conn);
iDB2DataReader rdr = cmd.ExecuteReader();

conn和cmd对象创建正常,但ExecuteReader()调用失败,并显示:

Unhandled Exception: System.InvalidOperationException: The operation cannot complete because the connection is not valid.
   at IBM.Data.DB2.iSeries.iDB2Command.verifyConnection()
   at IBM.Data.DB2.iSeries.iDB2Command.ExecuteDbDataReader(CommandBehavior behavior)
   at IBM.Data.DB2.iSeries.iDB2Command.ExecuteReader()
   at test04.DBDB2.read() in 
   c:\Users\mikeb\projs\ClassLibrary1\ClassLibrary1\DBDB2.cs:line 27

我的第27行是对cmd.ExecuteReader()的调用

有什么想法吗?


11月19日进一步的想法:

[请原谅任何笨拙的礼仪,我这里是一张新的海报]

  • 我错过了什么吗?我认为只有两件事要去 这里错了:
    1. 我的代码。不,太简单,并且由@MikeWills'验证交
    2. 我的连接字符串
    3. 或者还有别的东西吗?


- IBM.Data.DB2.iSeries.iDB2Command.verifyConnection()

此处是否有人可以访问代码来说明此方法的作用,以及可能导致其失败的原因?

2 个答案:

答案 0 :(得分:3)

解决。我错过了以下内容:

  • 需要在conn = new ....
  • 之后添加conn.Open()
  • 添加CheckConnectionOnOpen = true;连接字符串
  • 从查询字符串中删除

答案 1 :(得分:0)

查看this sample是否可以帮助您。我编写了一个库来简化IBM服务器连接,这是该库的一个非常古老的版本。我需要再将新版本公之于众。

更新:我的连接字符串为:DataSource=127.0.0.1;DefaultCollection=LIBRARY;Naming=sql;UserID=USER;Password=PASSWORD;