急。。在线等。。。。
前台代码:using ClassLibrary1;
Class2 user = new Class2();
SqlDataReader tt = user.sqlred("select * from js_newlb");
while (tt.Read())
{
Response.Write(tt["id"].ToString());
}
tt.Close();
类库中代码:ClassLibrary1
namespace idealconn
{
class Class2
{
public SqlDataReader sqlred(string sqlstr)
{
SqlConnection myconn = new SqlConnection(ConfigurationSettings.AppSettings["jsconnstring"]);
myconn.Open();
SqlCommand mycomm = new SqlCommand(sqlstr, myconn);
SqlDataReader dr = null;
SqlTransaction mytran = myconn.BeginTransaction();
try
{
mycomm.Transaction = mytran;
dr = mycomm.ExecuteReader(CommandBehavior.CloseConnection);
mytran.Commit();
}
catch (SqlException ex)
{
mytran.Rollback();
throw new Exception(ex.Message, ex);
}
return dr;
}
}
}
错误:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
错误行:36: dr = mycomm.ExecuteReader(CommandBehavior.CloseConnection);
在线等。。。。
--------------------编程问答-------------------- 不好意思,打错子了:
namespace idealconn
换成
namespace ClassLibrary1 --------------------编程问答-------------------- 怎么没人来看以眼啊。。。 --------------------编程问答--------------------
--------------------编程问答-------------------- 某处使用了DataReader但是没有关闭 关闭就好了啊。 --------------------编程问答-------------------- 晕..错了.重新来
namespace idealconn
{
class Class2
{
public SqlDataReader sqlred(string sqlstr)
{
SqlConnection myconn = new SqlConnection(ConfigurationSettings.AppSettings["jsconnstring"]);
myconn.Open();
SqlCommand mycomm = new SqlCommand(sqlstr, myconn);
SqlDataReader dr = null;
SqlTransaction mytran = myconn.BeginTransaction();
try
{
mycomm.Transaction = mytran;
dr.open(); dr = mycomm.ExecuteReader(CommandBehavior.CloseConnection);
mytran.Commit();
}
catch (SqlException ex)
{
mytran.Rollback();
throw new Exception(ex.Message, ex);
}
dr.close();
return dr;
}
}
}
mycomm.Transaction = mytran;这个前面加上
dr.read();
return dr; 前面加上
dr.close();
--------------------编程问答-------------------- 又是dataReader用了不关的问题。
问题出在别的代码,看看有没有Reader没关闭的。 --------------------编程问答-------------------- 4楼的说的 其实错误信息已经提示出来了。 --------------------编程问答-------------------- 加了,结果还是一样 。。。 --------------------编程问答-------------------- 我里面就这点代码。。还有什么没关啊。。 --------------------编程问答-------------------- using ClassLibrary1;
Class2 user = new Class2();
SqlDataReader tt = user.sqlred("select * from js_newlb"); //这里
while (tt.Read())
{
Response.Write(tt["id"].ToString());
}
tt.Close();
类库中代码:ClassLibrary1
namespace idealconn
{
class Class2
{
public SqlDataReader sqlred(string sqlstr)
{
SqlConnection myconn = new SqlConnection(ConfigurationSettings.AppSettings["jsconnstring"]);
myconn.Open();
SqlCommand mycomm = new SqlCommand(sqlstr, myconn);
SqlDataReader dr = null; //这里
SqlTransaction mytran = myconn.BeginTransaction();
try
{
mycomm.Transaction = mytran;
dr = mycomm.ExecuteReader(CommandBehavior.CloseConnection);
mytran.Commit();
}
catch (SqlException ex)
{
mytran.Rollback();
throw new Exception(ex.Message, ex);
}
return dr;
}
}
}
应该是着2个地方的问题!
打开没有关闭
有打开所以他提示已经打开。。。。。
--------------------编程问答-------------------- 类库里 加上 finally
{myconn.Close();} --------------------编程问答-------------------- 还是 解决不了问题啊 。。。 --------------------编程问答-------------------- 那位大侠来看看,给个解决的方法。。。 --------------------编程问答-------------------- DataReader.close();
不能用SqlDataAdapter吗 --------------------编程问答-------------------- 请贴完整代码。
补充:.NET技术 , ASP.NET