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"]);
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();
问题出在别的代码,看看有没有Reader没关闭的。
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个地方的问题!
打开没有关闭
有打开所以他提示已经打开。。
{myconn.Close();}