我一直在尝试连接到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,我没有看到任何错误消息,但代码永远不会在该行之后“等待”。你有什么想法?提前致谢
答案 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;");
请参阅以下网址中的完整说明