2009-11-24 187 views
0

我正在通過ODBC訪問MySql數據庫。它通常工作正常,但如果數據庫停止並重新啓動,我必須重新啓動我的應用程序才能重新連接到數據庫。MySql/Odbc連接問題

來訪問數據庫的代碼是這樣的:

 OdbcConnection connection = new OdbcConnection(connectString); 
     OdbcCommand command = connection.CreateCommand(); 
     command.CommandType = CommandType.Text; 
     command.CommandText = "select * from cds"; 
     OdbcDataAdapter dataAdapter = new OdbcDataAdapter(command); 
     DataSet dataSet = new DataSet(); 
     connection.Open(); 
     dataAdapter.Fill(dataSet); 
     connection.Close(); 

數據庫的重啓之後,我得到一個「MySQL服務器已經走了」在DataAdapter.Fill方法方法例外。是否 有什麼方法可以在我檢測到連接已斷開時重新連接到數據庫?

我使用VS2008和MySql 5.1.30。

+1

我會說重新啓動MySQL不是一個真正的正常操作,再加上你可以處理異常並重新連接沒有? – RageZ 2009-11-24 07:25:59

+1

,「MySQL服務器已經消失」,讓我無法接受。我切換到PostgreSQL,沒有這樣的問題,很高興我切換。另外,我有一個查詢,在MySQL之前45秒,當移植到Postgresql成爲6秒。我希望我已經發現了間歇性MySQL問題的解決方案,所以我可以在這裏提供答案。我現在可以做的只是upvote誰有一個想法如何防止MySQL中的這個問題 – Hao 2009-11-24 08:05:57

+0

當我嘗試處理異常時,我仍然在調用dataAdapter.Fill()方法時遇到新的異常。 – Ingvald 2009-11-24 08:53:27

回答

0

「重新啓動應用程序以重新連接到數據庫」只是一個糟糕的設計決定。數據庫連接的初始化不應該放在啓動代碼中,而應該放在一個單獨的過程中,並且如果您的某個方法得到異常「MySql服務器已經消失」,只需調用此過程以重新初始化連接到數據庫。

+0

我同意重新啓動應用程序重新連接是不好的,這就是爲什麼我正在尋找更好的方法。每次訪問數據庫時都會打開和關閉連接,但顯然這不足以重新連接。有誰知道任何其他方式來關閉/重新打開數據庫? – Ingvald 2009-11-24 09:03:31