我使用的是「用」結構,但是當我在一個循環中快速載入圖像,我收到以下錯誤異常錯誤:的ExecuteScalar保持返回
的ExecuteScalar需要一個開放和可用的連接。連接的當前狀態正在連接。
奇怪的部分是它每次運行時都會在循環的不同時間發生。
我已搜查我的整個解決方案,也沒有調用open()或關閉()任何地方,但在以下幾點:
public myMethod()
{
string conString;
conString = "Server=(local);Database=myDB;Uid=appaccess;Pwd=xxxxxx";
con = new SqlConnection(conString);
con.Open();
}
public void Dispose()
{
con.Close();
}
再後來在我的代碼調用此方法中的循環imgIDs:
public byte[] GetImageBitStream(int imgID)
{
SqlCommand cmd = new SqlCommand("GetImageBitStream", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@imgID", imgID));
Object picData = new Object();
picData = cmd.ExecuteScalar();
if (picData == null)
{
picData = "";
}
return (byte[])picData;
}
我不知道下一步該怎麼做!當我切換到「使用」格式時,此代碼用於工作並最近停止工作。但即使我切換回來,現在也是錯誤的。
這不回答你的問題,但你真的要打開和關閉周圍使用SqlCommand的SQL連接。這將返回並從連接池中獲取連接,這會在每次使用時重置連接,允許您針對羣集SQL服務器(部分)進行工作,並使您無需實施處置。請參閱:http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx,除非這意味着您已切換到「使用」模型。 –