解决这个错误:已经有一个与这个命令关联的打开的数据读取器,必须先关闭它

本文关键字:读取 数据 错误 有一个 解决 关联 命令 | 更新日期: 2023-09-27 18:10:14

我得到了这个错误:

"已经有一个与此命令相关联的打开的数据读取器,必须先关闭它"

private readonly object _syncRoot = new object();
public void SqlConnect(string server, string db, string user, string pw)
{
    lock (_syncRoot)
    {
       new_conn = new SqlConnection("Server=" + server + ";Database=" + db + ";User Id=" + user + ";Password=" + pw + ";");
       new_conn.Open();
    }
}
public string ReadString(string query)
{
    string strResult = null;
    using (SqlCommand command = new SqlCommand(query, new_conn))
    {
         using (SqlDataReader reader = command.ExecuteReader())
         {
             while (reader.Read())
             {
                    strResult = Convert.ToString(reader[0]);
             }
             reader.Close();
         }
    }
    return strResult;
}

我找不到那个代码有什么问题?

解决这个错误:已经有一个与这个命令关联的打开的数据读取器,必须先关闭它

在调用SqlCommand之前,您必须使用new_com检查您的连接是否仍然存活。状态属性。

我个人使用一个属性来获取连接,在获取这个属性时,如果它不存在,我创建连接,如果状态不是打开,我打开它