2011-07-18 80 views
1

我一直試圖連接到AS/400上的DB2數據庫好幾天!在我安裝IBM System i Access for Windows客戶端後,我可以從Visual Studio創建一個ODBC數據源,當我點擊「測試連接」時,它就成功了。但是,執行簡單的SELECT語句會導致無限等待,因爲數據庫似乎沒有響應它。 我使用連接和查詢的代碼是:無法從ODBC連接中檢索數據到DB2 iSeries

  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

什麼是你的 '簡單' 的SELECT語句完整的解釋呢? – KevinDTimm

回答

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,不確定是否有這樣的事情)。還是有一個「探查器」,可以讓你「偷看」數據庫查詢嗎?

既然你不顯示你的查詢,我不知道這是一個非常長時間運行的查詢。您等待查詢返回多長時間?在連接字符串中

約翰

+0

感謝您的快速響應。我最初的查詢是SELECT * FROM MYTABLE,其中MYTABLE是最近創建的一個表格,並填充了1行。我試圖查詢這個數據庫使用Visual Studio服務器與相同的結果(長期等待),我也試過你發佈的代碼,這次執行停止的行是「使用(OdbcCommand com = new OdbcCommand(SQL ,connection,null))「。我注意到了一些其他的東西,當我點擊Visual Studio選項「驗證SQL語法」時顯示錯誤消息「此命令不受此提供程序支持」 – user769564

+0

我發現此線程:http://groups.google.com/group/ ibm_db/browse_thread/thread/ed68b178cdbee4ea?pli = 1這表明您需要配置一個名爲DB Connect的東西。你做到了嗎? – JohnD

+0

我認爲DBConnect就像連接到db2 iSeries的替代軟件。我安裝了Access for Windows,但我想我必須嘗試它,因爲我仍然有這個問題。 – user769564