![](/img/trans.png)
[英].NET/C# DB2 for iSeries 'FatalExecutionEngineError' from IBM.Data.DB2.iSeries
[英]Can not retrieve data from a ODBC connection to DB2 iSeries
幾天來,我一直在嘗試連接到 AS/400 上的 DB2 數據庫。 在我為 Windows 客戶端安裝 IBM System i Access 之后,我可以從 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,我沒有看到任何錯誤消息,但代碼在該行之后永遠不會完成“等待”。 你有什么想法? 提前致謝
在連接字符串中將 LONGDATACOMPAT 標志設置為 1 對我有用。
[C#]
OdbcConnection con =
new OdbcConnection("DSN=SAMPLE;UID=uid;PWD=mypwd;
LONGDATACOMPAT=1;");
請參閱下面 URL 中的完整說明
我不確定到底是什么問題,但您可以嘗試使用數據閱讀器,看看是否能給您帶來更好的結果嗎?
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,不確定是否有這樣的事情)。 或者是否有一個“分析器”可以讓您在數據庫查詢進入時“窺視”它們?
由於您沒有顯示您的查詢,我想知道它是否是一個運行時間很長的查詢。 您等待查詢返回多長時間?
約翰
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.