2013-09-25 54 views
0

我想通過下面的代碼來模擬MySql CommandTimeout異常。 我有一個CommandTimeout 3秒,我的查詢大約需要30秒來執行。 爲什麼此代碼無法正常工作?我有什麼問題嗎?MySql CommandTimeout

在我的連接字符串中沒有commandtimeout。

 
connectionString="server=localhost; logging=true;user id=*****;pwd=****database=shopdb;port=3306;persist security info=true;allow user variables=false;allow zero datetime=true" 

請幫忙。

 
using (MySqlCommand cmd = new MySqlCommand("select * from order_line", new MySqlConnection("myConnectionString"))) { 

    cmd.CommandTimeout = 3; // default 30 seconds 
    try { 
     DateTime start = DateTime.Now; 
     cmd.Connection.Open(); 
     using (MySqlDataReader reader = cmd.ExecuteReader()){ 
      while (reader.Read()){ 

      } 
      DBFactory.CloseReader(reader); 
     } 
     cmd.Connection.Close(); 
     DateTime end = DateTime.Now; 

     TimeSpan ts = end - start; 

     Response.Write(ts.Seconds + "." + ts.Milliseconds); 

    } catch (Exception ex) { 
     Response.Write(ex.Message); 
    } finally { 
     DBFactory.CloseConnection(cmd); 
    } 
} 
+0

你的連接字符串究竟是什麼? – user1455836

+0

connectionString =「server = localhost; logging = true; user id = *****; pwd = **** database = shopdb; port = 3306; persist security info = true; allow user variables = false; allow zero datetime = true「 – user2783635

+1

我建議你仔細閱讀這個:http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html#connector-net-examples-mysqlcommand-commandtimeout – Stephan

回答

0

你能告訴我你有多少條記錄到你的order_line表中,所以我們可以找出附加的東西嗎?正常情況下,CommandTimeout對上下文連接(在連接字符串中以「context connection = true」打開的SqlConnection)執行命令時不起作用.CommandTimeout是累計超時(對於在調用期間讀取的所有網絡數據包一種方法),用於執行命令或處理結果期間的所有網絡讀取。在返回第一行後仍然可能發生超時,並且不包括用戶處理時間,僅包括網絡讀取時間。

例如,如果讀取需要兩個網絡數據包,則10秒鐘超時後,它將有10秒的時間讀取兩個網絡數據包。如果再次調用Read,它將有10秒的時間來讀取它需要的任何數據。 (從msdn複製)。你需要更多的解釋,兄弟?

+0

如果您有一個新問題,請通過單擊[問問題](http://stackoverflow.com/questions/ask)按鈕來提問。如果有助於提供上下文,請包含此問題的鏈接。 - [來自評論](/ review/low-quality-posts/12674406) – FLICKER

+0

我想幫助他的兄弟@Flicker。你爲什麼告訴我這件事兄弟? – Nayeem

+0

我認爲這是一個誤解。別擔心。 – FLICKER

相關問題