我正在使用C#+ .Net 3.5 + VSTS 2008 + ADO.Net + SQL Server 2008.我正在共享一個單獨的SQL連接對象(TestDBConnection變量,在下面的示例中)在我的應用程序。ADO.Net DataReader錯誤:已打開DataReader
我遇到的例外情況是「已經有一個打開的DataReader與這個Command關聯,必須先關閉它......」任何想法有什麼問題?
我正在使用的應用程序中的模式都是這樣的,即共享單個數據庫連接對象TestDBConnection,並使用單個TestDBConnection變量在其上創建命令並執行存儲過程。
using (SqlCommand testCommand = new SqlCommand())
{
testCommand.Connection = TestDBConnection;
testCommand.CommandType = CommandType.StoredProcedure;
testCommand.CommandText = "prc_AddOrderStatus";
testCommand.Parameters.Add("@orderID", SqlDbType.NVarChar).Value = orderID;
testCommand.ExecuteNonQuery();
}
由於事先 喬治
感謝RichardOD,共享連接對象是我的問題的根源?是否有任何提到一個連接的文檔用於查詢命令A,我們不能將它用於命令B? – George2 2009-07-09 08:21:49
那麼從你在John的回答評論中描述的情況來看,它看起來像你有一些嚴重的多線程問題。您可以使用同一個連接與多個命令(在同一個線程中),但推薦的方法是使用連接池。如果您一次使用多個SQL Server命令,則需要考慮使用MARS。首先解決線程/共享連接問題,您的問題可能會消失。在你的情況下,我不認爲你需要MARS。 HTH。 – RichardOD 2009-07-09 08:30:13