在C#应用程序中,是应该创建一次DB连接,还是每次执行SQL语句?

CJ7*_*CJ7 11 c# oledbconnection winforms

在C#应用程序中,是应该OleDBConnection创建一次,还是每次执行SQL语句?

我正在查看其他人编写的C#代码.每个SQL语句都在创建一个OleDbConnection对象,其连接字符串指向MDB数据库.

是否适合每次创建OleDbConnection对象,或者应该在应用程序的开头创建对象并从那时开始使用.

小智 7

根据使用ADO.NET的最佳实践:

高性能应用程序可在最短的时间内保持与正在使用的数据源的连接,并利用连接池等性能增强技术......


Dou*_*oug 7

假设您的数据库可以使用连接池,那么您可能希望为每次调用数据库打开和关闭连接.这允许您仅在需要时才使用数据库连接的有限资源,然后将其返回到池中,以便在您完成调用后立即使用其他调用者.如果您坚持连接,您很快就会耗尽有限资源,即数据库的总可用连接,从而严重影响应用程序的可伸缩性和性能.

我通常使用using语句来确保连接在使用后关闭 - 见下文:

  using (ODBCConnection c = new ODBCConnection(ConnectionString))
  {
    c.Command.CommandType = CommandType.Text;
    // make a call
  }
Run Code Online (Sandbox Code Playgroud)

请享用!


Dav*_*vid 4

这取决于实际情况。

如果您要连续执行多个语句,那么从性能角度来看,最好打开它一次,执行所有语句,然后关闭它,

如果您询问在程序启动时打开连接并保持打开状态直到程序关闭(无论发生什么情况),那么不行。完成后立即关闭它。最好不要让连接保持打开状态。

人们似乎从未想到的另一个因素是后来的维护程序员,他们必须跟踪代码并跟踪连接在哪里打开以及何时关闭。例如,假设您有一个程序访问数据库,然后分支为几个其他函数,每个函数都可能需要连接。跟踪代码中的那些东西是一场噩梦。

话又说回来,这个因素对于正确的操作和性能来说是次要的,但在复杂的应用程序中仍然需要考虑。

主要因素是它将如何影响性能与保持连接打开的情况。您需要根据每种情况做出决定。