当前位置:编程学习 > C#/ASP.NET >>

SqlDataReader 的问题

已有打开的与此命令相关联的 DataReader,必须首先将它关闭。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

源错误: 


行 161:            SqlCommand cmd = new SqlCommand(sql, Connection);
行 162:            cmd.Parameters.AddRange(values);
行 163:            SqlDataReader reader = cmd.ExecuteReader();
行 164:             return reader;
       
 
--------------------编程问答-------------------- 可能在同一个范围内 有创建过另一个名为reader 的对象
检查一下161行上面的代码 --------------------编程问答-------------------- Connection.Open()了没有啊~ --------------------编程问答-------------------- 把调用代码贴上来才能帮你找到问题啊。 --------------------编程问答-------------------- 典型的sqldatareader用完没显示关闭造成的 --------------------编程问答-------------------- public void CreateMySqlDataReader(string mySelectQuery,string myConnectionString) 
{
   SqlConnection myConnection = new SqlConnection(myConnectionString);
   SqlCommand myCommand = new SqlCommand(mySelectQuery, myConnection);
   myConnection.Open();
   SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
   while(myReader.Read()) 
   {
      Console.WriteLine(myReader.GetString(0));
   }
   myReader.Close();
   //Implicitly closes the connection because CommandBehavior.CloseConnection was specified.
}
--------------------编程问答-------------------- 异常信息已说的很明确了,要打开新的DataReader需要把原来的那个关闭。 --------------------编程问答-------------------- 你的 数据访问层有问题,写得不好,建议你用 SqlHelper.cs
你在用你当然出错的个 SQldatareader 之前看是不是在这个之前有的地方也用了
sqldataread 打开了数据库链接.选关闭它或关闭之前的个 sqldatareader.

建议你还是用 sqlhelper.cs 否则你还会遇到更多这样的问题 --------------------编程问答-------------------- 谢谢大家:我已经解决了

 呵呵....
  这样写就没问题了
 
        using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
        {
            strSQL.Append(SQL_INSERT_BBSINFO);
            conn.Open();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strSQL.ToString();
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();//记住 ,一定要江参数列表进行清空

        }
    
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,