日期:2014-05-18  浏览次数:20477 次

有打开的与此连接相关联的 DataReader,必须首先将它关闭
using(SqlConnection   conn   =   new   SqlConnection(connectionstring))
{
SqlDataReader   dr=SqlHelper.ExecuteReader(conn,CommandType.Text, "select   *   from   table   WHERE   F_id= ' "+User+ " ' ");
if(dr.Read())
SqlHelper.ExecuteNonQuery(conn,System.Data.CommandType.Text, "update   table2   set   F_ID= ' "+hidNetID+ " '   where   F_bh= ' "+User+ " ' ");
else
SqlHelper.ExecuteNonQuery(conn,System.Data.CommandType.Text, "insert   into   table2   (F_bh,F_ID)   values( ' "+User+ " ', ' "+hidNetID+ " ') ");


这段程序总是出错,请问ExecuteNonQuery   跟dr有什么关系?

}

------解决方案--------------------
if(dr.Read())
SqlHelper.ExecuteNonQuery(conn,System.Data.CommandType.Text, "update table2 set F_ID= ' "+hidNetID+ " ' where F_bh= ' "+User+ " ' ");
else
SqlHelper.ExecuteNonQuery(conn,System.Data.CommandType.Text, "insert into table2 (F_bh,F_ID) values( ' "+User+ " ', ' "+hidNetID+ " ') ");


先关闭你的dr 才可以继续工作
------解决方案--------------------
ExecuteNonQuery 和dr没关系啊
一个是执行对SQL增 删 操作的 一个是执行从数据库中读取你需要的数据的
没有关系
你仔细找找看看前面哪个dr没关闭吧。
------解决方案--------------------
一个 Connection 只能同时给一个 DataReader 使用,并且当有打开的 DataReader 与 Connection 关联的时候,不能使用此 Connection


if(dr.Read())

> >

// 1.0
bool hasRows = dr.Read();
dr.Close();
if(hasRows) {
// ...
}

// 1.1 +
if(dr.HasRows) {
dr.Close();
// ...
}