2013-05-31 33 views
0

我們使用c#應用程序(Ranorex)使用ODBC連接來連接到Microsoft Access(.mdb)數據庫。在單次運行代碼期間,我們不會收到任何錯誤,並且連接已成功完成。 基本上,代碼打開一個到數據庫的連接,從數據庫中檢索數據,然後我們在數據庫連接上使用.close方法。 但是,代碼在幾天後在循環中連續運行時,會顯示以下錯誤: 「線程無法啓動」。
這發生在ODBC連接(嘗試)打開的位置。 有沒有人有任何建議如何解決這個問題?C#MS Access.mdb 2007 ODBC連接「線程無法啓動」錯誤

謝謝

+0

很難說,但請記住,一個連接不僅應該關閉,但你也應該處置它。嘗試使用using語句封裝連接 – Steve

+0

謝謝史蒂夫,我們應該使用close和dispose還是隻處理? – rockOn123

+0

我會添加一個答案作爲例子,以更好地解釋代碼 – Steve

回答

1

這只是一個例子。我無法直接引用您的代碼來回答您的問題,因爲沒有代碼可以查看。然而,昂貴的資源,如數據庫連接工作時的模式可供遵循的總是相同的:Create, Open, Use, Close, Destroy

using(OdbcConnection con = new OdbcConnection(conString)) 
using(OdbcCommand cmd = new OdbcCommand(commantText, con)) 
{ 
    OdbcDataAdapter da = new OdbcDataAdapter(cmd); 
    con.Open(); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "Table"); 
    dataGridView1.DataSource = ds.Tables[0]; 
} 

using statement在這方面發揮重要作用。當代碼從使用塊中退出時,該命令被處理,連接被關閉然後被處置。 另外,如果在使用塊的中間出現異常。它是編寫try{....}finally{close/dispose}的非常方便的替代品。當然,我不能說這會解決您的問題,但是這是適用於您的代碼的正確的first aid

+0

嘿史蒂夫,我最近纔開始使用'using'(可以這麼說),我的印象是,對於多類型聲明,語法是'using type1,type2){'。這是我第一次見到'使用(type1)使用(type2){'。這是一種合法的替代語法嗎? –

+0

是的,這是一種印象,因爲這種語法是不允許的。您收到....'不能在for,using,fixed或declaration語句中使用多個類型' – Steve

+0

Aha,好的,謝謝!我再次查看了文檔,並且允許*相同類型*的多個*實例*,而不是多個*類型*。我在學.... –