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