1

我收到了这个错误:

“已经有一个打开的 DataReader 与此命令关联,必须先关闭”

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;
}

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

4

1 回答 1

1

在调用 SqlCommand 之前,您必须使用 new_com.Status 属性检查您的连接是否仍然有效。

就我个人而言,我使用一个属性来获取连接,并在获取该属性时创建连接,如果它不存在并且状态未打开,我将打开它。

于 2015-08-28T04:54:27.153 回答