不断积累,必然飞跃,突破随之!

相信自己,开拓生活!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在使用datareader结束时,要保证connection关闭

Posted on 2009-03-02 17:46  Tangyuan2017  阅读(447)  评论(0编辑  收藏  举报

使用CommandBehavior.CloseConnection来保证在关闭Datareader时,也关闭connection

public static SqlDataReader(.....)

{
            SqlCommand cmd = new SqlCommand();
            SqlConnection conn = new SqlConnection(connectionString);

            // we use a try/catch here because if the method throws an exception we want to
            // close the connection throw code, because no datareader will exist, hence the
            // commandBehaviour.CloseConnection will not work
            try
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return sdr;
            }
            catch
            {
                conn.Close();
                throw;
            }

}

在其它地主使用的方法,利用using

using (SqlDataReader sdr = SQLHelper.ExecuteReader(SQLHelper.SQLConnString, CommandType.Text, SQL_Search_ById, adminParms))
            {
                while (sdr.Read())
                {
                    admin = new AdminInfo(sdr.GetInt32(0), sdr.GetString(1), sdr.GetString(2));
                }
            }

或者

SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringProfile, CommandType.Text, sqlSelect.ToString(), parms);
   while(dr.Read()) {
    usernames.Add(dr.GetString(0));
   }

   dr.Close();

//一定要保证,使用之后的状态是关闭的。