我使用的是“用”结构,但是当我在一个循环中快速载入图像,我收到以下错误异常错误:的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,除非这意味着您已切换到“使用”模型。 –