首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果使用using子句,是否需要关闭DbConnection?

如果使用using子句,是否需要关闭DbConnection?
EN

Stack Overflow用户
提问于 2012-08-20 07:51:53
回答 5查看 10.6K关注 0票数 8

可能重复: Will a using block close a database connection?

在以下情况下,是否没有必要使用db.Close()

代码语言:javascript
复制
using (DbConnection db = GetDbConnection())
{
   // do data-access stuff
   // ...

   db.Close();
}
EN

回答 5

Stack Overflow用户

发布于 2012-08-20 07:54:49

如果使用using子句,是否需要关闭DbConnection?

不,如果使用using子句,则不需要关闭DbConnection?

是的,在这里没有必要,因为当using的作用域结束时,连接将释放所有内存。

由于DBConnection实现了IDisposable接口,所以在DBConnectionDispose方法中存在关闭函数。

但是,如果一些线是在闭线之后,那么它是有用的。

代码语言:javascript
复制
using (DbConnection db = GetDbConnection())
{
  // do data-access stuff
  // ...

  db.Close(); //Useless
}

但在这里它是有用的

代码语言:javascript
复制
using (DbConnection db = GetDbConnection())
{
  // do data-access stuff
  // ...

  db.Close(); //Useful

 // Some more code
}

在这种情况下,你可以

代码语言:javascript
复制
using (DbConnection db = GetDbConnection())
{
  // do data-access stuff
  // ...

}

// Some more code which was previously inside using section.
票数 12
EN

Stack Overflow用户

发布于 2012-08-20 08:03:08

为了确保我已经检查了代码:)

代码语言:javascript
复制
   protected override void Dispose(bool disposing)
    {
      if (disposing)
      {
        this._userConnectionOptions = (DbConnectionOptions) null;
        this._poolGroup = (DbConnectionPoolGroup) null;
        this.Close();
      }
      this.DisposeMe(disposing);
      base.Dispose(disposing);
    }

这是SqlConnection的实现,它继承了DbConnection。如您所见,有this.Close()方法:)

票数 4
EN

Stack Overflow用户

发布于 2012-08-20 07:54:04

据我所知,当调用Dispose()方法时,将自动执行Close()

所以这里没有必要使用db.Close();

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12033998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档