有打开的与此连接相关联的 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();
// ...
}