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

标签 c# sql ado.net db2-400

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

我可以使用 ClientAccess“Data Transfer From 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()

这里有人可以访问代码来说明此方法的作用以及可能导致其失败的原因吗?

最佳答案

已解决。我遗漏了以下内容:

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

关于C# ADO.Net 到 db2 iseries - 连接无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060502/

相关文章:

c# - 获取 .Net XML 文档以返回字典的特定类型

c# - 平滑淡入淡出的控制

sql - 按天而不是时间对时间戳进行分组

c# - Entity Framework 删除对象问题

c# - 使用 ADO.NET SqlDataAdapter 更新单个记录

c# - 使用Interlocked.CompareExchange作为锁,只用于进入,不用于退出,是否安全?

C# 和 PostgreSQL INSERT INTO

c# - 管理数据表

mySQL - 多个表的外键?

mysql - 更新更新触发器中的其他行