日期:2014-05-17  浏览次数:20886 次

ADO.NET中使用ExecuteReader怎么关闭数据库连接????
我在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要求连接必须是一直打开的,但是用完了怎么关闭连接?????

------解决方案--------------------
cmd.ExecuteReader(CommandBehavior.CloseConnection);
sdr.Close时连接也会关闭
------解决方案--------------------
SqlDataReader sdr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            while (sdr.Read())
            {
                Console.WriteLine(sdr[0].ToString());
            }
            sdr.Close();//这里会自动关闭SqlDataReader