首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

ADO.NET中使用ExecuteReader如何关闭数据库连接?

2013-04-12 
ADO.NET中使用ExecuteReader怎么关闭数据库连接????我在sqlhelper写了方法:public static SqlDataReader E

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

热点排行