我在sqlhelper写了方法:
public static SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
       {
           SqlConnection conn = new SqlConnection(StrConn);
           conn.Open();
           try
           {
               SqlCommand cmd = new SqlCommand(cmdText, conn);
               for (int i = 0; i < commandParameters.Length; i++)
               {
                   cmd.Parameters.Add(commandParameters[i]);
               }
               cmd.CommandType = cmdType;
               SqlDataReader sdr = cmd.ExecuteReader();
               cmd.Parameters.Clear();
               return sdr;
           }
           catch
           {
               conn.Close();
               throw;
           }
       }
这样写没有关闭数据库连接。如果在这个方法中关闭了连接,前边用到这个方法就会报错,因为SqlDataReader要求连接必须是一直打开的,但是用完了怎么关闭连接?????

解决方案 »

  1.   

    这个方法里面不用关闭。
    调用的地址进行关闭SqlDataReader就行了。
      

  2.   

    SqlDataReader可以关闭但是SqlConnection 没有关闭,
      

  3.   

    cmd.ExecuteReader(CommandBehavior.CloseConnection);
    sdr.Close时连接也会关闭
      

  4.   

    SqlDataReader sdr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                while (sdr.Read())
                {
                    Console.WriteLine(sdr[0].ToString());
                }
                sdr.Close();//这里会自动关闭SqlDataReader
      

  5.   

    sdr.Close()时SqlConnection 会自动关闭么?
      

  6.   

    确定么SqlConnection 会自动关闭么?