public SqlDataReader getSdr(string qs)
    {
        SqlConnection Conn = xxxxxxx; 
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = Conn;
        cmd.CommandText = qs;
        SqlDataReader sdr = cmd.ExecuteReader();
        return sdr;
    }在程序中使用sdr.close()之后还要不要关闭Conn?  如何关闭Conn??

解决方案 »

  1.   

    if(Conn!=null)
    {
      Conn.Close();
    }是这样吗?我也刚学
      

  2.   

    必须关闭
    就算你马上还要用这个连接,
    你要从新Open()它一次.
    总之,用完一次关一次
    再用再开!
      

  3.   

    SqlDataReader sdr =  getSdr(xxx) 
    之后用"sdr.close()" 能关掉这个SqlDataReader
    但是其Conn怎么关呢?
      

  4.   


    自问自答一下SqlConnection Conn = xxxxxxx; 
    public SqlDataReader getSdr(string qs) 
        { 
            SqlCommand cmd = new SqlCommand(); 
            cmd.Connection = Conn; 
            cmd.CommandText = qs; 
            SqlDataReader sdr = cmd.ExecuteReader(); 
            return sdr; 
        } 这样倒是能Sdr.close() 和Conn.Close();
    但我不想这么写 @@
      

  5.   

    看来只有在getSdr中用完就关了。
      

  6.   

    return sdr之前不能关闭, Return之后...能关闭也不会执行如果照我4楼的方法, 我就不用写在类里面, 总共就几句的东西, 拆开写的话还麻烦了 = = 苦命啊~
      

  7.   

    lz 这样的代码关闭完reader 必须要关闭conn
    改用
     public SqlDataReader getSdr(string qs) 
        { 
            SqlConnection Conn = xxxxxxx;  
            SqlCommand cmd = new SqlCommand(); 
            cmd.Connection = Conn; 
            cmd.CommandText = qs; 
            SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//这里 
            return sdr; 
        } 
    就可以关闭sdr,而不用关闭conn
      

  8.   


            public SqlDataReader getSdr(string qs) {
                SqlConnection Conn = xxxxxxx;
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = Conn;
                cmd.CommandText = qs;
                SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//这里  
                  return sdr;
            }
      

  9.   

    返回reader很危险。。为了不必要的麻烦,返回dataset,datatable,或者泛型最好。
    public List<T> getSdr(string qs)  
        {  
    SqlConnection Conn = xxxxxxx;  
    List<T> lsit=new List<T>();
            SqlCommand cmd = new SqlCommand();  
            cmd.Connection = Conn;  
            cmd.CommandText = qs;  
            SqlDataReader sdr = cmd.ExecuteReader();  
            while(sdr.read())
            {
                  list.add(T);
             }
    return list;
        }  
      

  10.   

    谢谢7和8楼的回答, 原来这么简单啊, C#继续学习ing...  ><
    9楼的方法也很好啊,又学一招 ^^