2010-07-26 169 views
2

我有一個函數用於通過ODBC將寫查詢發送到DB2,並且如果我失去與DB2的連接,它會不時在此函數中掛起。我發送60作爲我的超時功能,但它永遠不會超時。它只是無限期地掛起我的線程,我不確定強制這個函數放棄的好方法。ODBC連接到DB2掛起

public int WriteQuery(string query, string dbConnStr, int timeout) 
{ 
    int rowsAffected = -1; 
    OdbcConnection conn = new OdbcConnection(dbConnStr); 

    try 
    { 
      conn.Open(); 
      OdbcCommand command = new OdbcCommand(query, conn); 
      command.CommandTimeout = timeout; 

      OdbcTransaction trans = conn.BeginTransaction(); 
      command.Transaction = trans; 

      OdbcDataAdapter adapter = new OdbcDataAdapter(command); 
      adapter.UpdateCommand = command; 

      rowsAffected = command.ExecuteNonQuery(); 
      trans.Commit(); 
     } 
     catch(Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      conn.Close(); 
      conn.Dispose(); 
     } 

     return rowsAffected; 
    } 
} 
+0

你知道哪個聲明是掛斷的嗎?我沒有看到任何類型的日誌語句,所以我猜你不確定,除非在調試器中執行代碼時看到這種情況。 – 2010-07-26 17:38:21

回答

0

無論如何,你是用同樣的方法打開和關閉連接。 嘗試使用:OdbcConnection.ConnectionTimeout = 60;

希望這會有所幫助!