无法从ODBC连接检索DB2 iSeries的数据

时间:2011-07-18 20:59:12

标签: .net odbc db2

我一直在尝试连接到AS / 400上的DB2数据库好几天了!在我安装IBM System i Access for Windows客户端之后,我可以从visual studio创建一个ODBC数据源,当我点击“测试连接”时,它就成功了。但是,执行简单的SELECT语句会导致无限等待,因为数据库似乎没有响应它。 我用来连接和查询的代码是:

            OdbcConnection conn = new OdbcConnection(@"Dsn=TEST1;Uid=myuser;Pwd=mypwd;DBQ=mydb2");
            conn.Open(); 

            try
            {
                string cmmTxt = query;
                OdbcCommand cmd = new OdbcCommand(cmmTxt, conn);
                OdbcDataAdapter da = new OdbcDataAdapter(cmd);
                da.Fill(dset);
            }
            catch (Exception e)
            {
                Console.Write(e.StackTrace);
            }
            finally
            {
                conn.Close();
            }

执行停止响应的行是“da.Fill(dset);”。顺便说一下,我正在使用visual studio 2010,我没有看到任何错误消息,但代码永远不会在该行之后“等待”。你有什么想法?提前致谢

2 个答案:

答案 0 :(得分:0)

我不确定问题究竟是什么,但您可以尝试使用数据阅读器并查看是否可以获得更好的效果吗?

OdbcConnection conn = new OdbcConnection(@"Dsn=TEST1;Uid=myuser;Pwd=mypwd;DBQ=mydb2");
string SQL = "SELECT COUNT(*) FROM MyTable";
using (OdbcCommand com = new OdbcCommand(SQL, connection, null))
{
    using (OdbcDataReader reader = com.ExecuteReader())
    {
        while (reader.Read())
        {
            var value = reader["MyColumn"];
        }
    }
}

其次,您确定您的查询会在合理的时间内返回吗?你有一些工具可以直接对数据库运行查询(我不熟悉DB2,不确定是否有这样的事情)。或者是否有“分析器”可以让您在数据库查询进入时“查看”它们?

由于您没有显示您的查询,我想知道它是否是一个非常长时间运行的查询。你等待查询返回多久了?

约翰

答案 1 :(得分:0)

在为我工作的连接字符串中将LONGDATACOMPAT标志设置为1。

[C#]
OdbcConnection con =
  new OdbcConnection("DSN=SAMPLE;UID=uid;PWD=mypwd;
  LONGDATACOMPAT=1;");

请参阅以下网址中的完整说明

http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.swg.im.dbclient.adonet.doc%2Fdoc%2Fr0011829.html