2010-01-05 59 views
0

我設置超時爲0,但連接關閉prematuraly,這個聲明有什麼問題?如何在Sql Server 2008中將ConnectionTimeout設置爲0?

 Using odbcconn As New OdbcConnection(DataShared.gstrCNN) 

     odbcconn.ConnectionTimeout = 0 
     odbcconn.Open() 
     Dim OdbcCmd As New OdbcCommand(_ 
      "{ ? = CALL [proc_Cp_GenEstadoCta](" & _ 
      PCOD_EMPR & ", " & _ 
      PPER_ANUAL & "," & _ 
      DataShared.gintCODUSER & ") }", odbcconn) 

     OdbcCmd.Parameters.Add("@return", OdbcType.Int) 
     OdbcCmd.Parameters("@return").Direction = ParameterDirection.ReturnValue 

     OdbcCmd.ExecuteNonQuery() 
     If CInt(OdbcCmd.Parameters("@return").Value) = 0 Then 
      GenEstadoMovsSaldos = True 
     Else 
      GenEstadoMovsSaldos = False 
     End If 

    End Using 

改正的代碼

 Using odbcconn As New OdbcConnection(DataShared.gstrCNN) 

     --odbcconn.ConnectionTimeout = 0 

     odbcconn.Open() 
     Dim OdbcCmd As New OdbcCommand(_ 
      "{ ? = CALL [proc_Cp_GenEstadoCta](" & _ 
      PCOD_EMPR & ", " & _ 
      PPER_ANUAL & "," & _ 
      DataShared.gintCODUSER & ") }", odbcconn) 

     OdbcCmd.CommandTimeout = 60 

     OdbcCmd.Parameters.Add("@return", OdbcType.Int) 
     OdbcCmd.Parameters("@return").Direction = ParameterDirection.ReturnValue 

     OdbcCmd.ExecuteNonQuery() 
     If CInt(OdbcCmd.Parameters("@return").Value) = 0 Then 
      GenEstadoMovsSaldos = True 
     Else 
      GenEstadoMovsSaldos = False 
     End If 

    End Using 

它的工作好!

回答

3

你想通過將連接超時設置爲零來完成什麼?

連接超時是嘗試打開數據庫連接時等待的時間。當連接關閉時,它無關。

也許您正在尋找OdbcCommand類中的CommandTimeout屬性?將CommandTimeout設置爲零將在等待查詢運行時刪除時間限制。

但是,如果數據庫脫機,程序將無限期地等待一些不會發生的事情,所以您應該考慮設置較長的時間,以便命令最終會超時而不是永遠不會。

(順便說一句,你爲什麼要使用ODBC數據庫驅動程序,而不是更快,更專業的SqlClient司機?)

+0

是啊,因爲我連接到其它數據庫如MySQL。 Thx – RicardoBalda 2010-01-05 19:26:20

相關問題