首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft Enterprise DAAB和关闭连接

Microsoft Enterprise DAAB和关闭连接
EN

Stack Overflow用户
提问于 2009-05-27 16:08:52
回答 3查看 1.4K关注 0票数 0

我记得我在哪里读到过,当你使用下面的代码时:

代码语言:javascript
复制
Database db = DatabaseFactory.CreateDatabase("ConnectionString");
IDataReader rdr = db.ExecuteReader("sproc")

连接对你来说是关闭的,所以我调查了一下,看起来不是这样的。我对DAAB不是很熟悉,有没有人知道什么时候会发生什么?此外,同一个应用程序有一系列的类,比如:

代码语言:javascript
复制
public class Example
{
   private Database db;
   public Example ()
   {
      db = DatabaseFactory.CreateDabase("ConnectionString");
   }

   public void Update(object o)
   {
      try
      {
         db.ExecuteNonQuery("sproc", o.parameter);
      }
      catch...
      }
      }
   }
 }

如果DAAB中的连接没有自行关闭,这些类会导致泄漏吗?

EN

回答 3

Stack Overflow用户

发布于 2009-05-27 16:30:45

您是否尝试过处理数据读取器?我总是这样做,没有任何挥之不去的联系。

代码语言:javascript
复制
Database db = DatabaseFactory.CreateDatabase("ConnectionString");
using (IDataReader rdr = db.ExecuteReader("sproc")) {
    // Use the data reader
}
票数 1
EN

Stack Overflow用户

发布于 2010-08-01 01:16:54

来自entlib3.0的ExecuteReader方法有一个问题。这是一个为实现事务作用域而做的修复,但在使用事务处理大量数据时出现了错误。所以他们已经对此进行了修复,这个问题是由于修复而导致的。因此,无论何时使用ExecuteReader方法,都必须关闭连接。更好的做法是在上面提到的using块中使用它

票数 1
EN

Stack Overflow用户

发布于 2009-05-27 16:20:08

我也在调查一个在Oracle数据库上使用DAAB的泄漏事件--在使用微软驱动程序时,一切似乎都很正常,但在使用Oracle Odp.net提供程序时,我看到了一些问题。DAAB在内部使用CommandBehavior枚举来控制ExecuteReader方法的连接生存期,但是ExecNonQuery方法似乎有些地方不太对劲。

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

https://stackoverflow.com/questions/916622

复制
相关文章

相似问题

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