当前位置:编程学习 > C#/ASP.NET >>

急。。在线等。。。。

 前台代码:
 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 --------------------编程问答-------------------- 怎么没人来看以眼啊。。。 --------------------编程问答--------------------

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; 

                } 



--------------------编程问答-------------------- 某处使用了DataReader但是没有关闭 关闭就好了啊。 --------------------编程问答-------------------- 晕..错了.重新来
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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,