这是我的代码。
/// <summary>
/// Method calls stored procedure and fills DataSet of contacts associated with Lead
/// </summary>
/// <param name="leadID">The ID associated with a Lead</param>
/// <returns>contacts list as DataSet</returns>
public static DataSet GetContactResultSetByLead(int leadID)
{
SqlCommand Sqlmd = new SqlCommand("dbo.proc_contact");
Sqlmd.CommandType = CommandType.StoredProcedure;
Sqlmd.Parameters.Add("@LeadInfoID", SqlDbType.Int).Value = leadID;
Sqlmd.Connection = m_ConStr;
SqlDataAdapter da = new SqlDataAdapter(Sqlmd);
DataSet data = new DataSet();
try
{
da.Fill(data);
}
finally
{
m_ConStr.Close();
}
return data;
}
最佳答案
你的问题是你显然有一个m_ConStr
的实例;如果同时调用该方法,则只有其中一个可以使用连接,而另一个将失败,并出现您收到的异常。
改为使用此模式:
using (SqlConnection conn = new SqlConnection())
{
conn.Open();
Sqlmd.Connection = conn;
SqlDataAdapter da = new SqlDataAdapter(Sqlmd);
//...etc
}
换句话说,不要将连接定义为类的全局变量。
关于c# - 已经有一个与此命令关联的打开的 DataReader,必须先将其关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9023452/