当前位置: 首页 > 面试题库 >

什么时候应该打开和关闭与SQL Server的连接

邢嘉祯
2023-03-14
问题内容

我有一个简单的静态类,其中有一些方法。这些方法中的每一个都打开SqlConnection,查询数据库并关闭连接。这样,我可以确定我总是关闭与数据库的连接,但是,另一方面,我不喜欢总是打开和关闭连接。以下是我的方法的示例

public static void AddSomething(string something)
{
    using (SqlConnection connection = new SqlConnection("..."))
    {
        connection.Open();
        // ...
        connection.Close();
    }
}

考虑到这些方法在静态类内部,我是否应该有一个包含单个SqlConnection的静态成员?我应该如何以及何时丢弃它?最佳做法是什么?


问题答案:

不,SqlConnection除非必须,否则不要保持静态。线程将是一个问题,但更重要的是-
通常,您根本不需要。使用所示的代码,内部连接池意味着在大多数情况下,无论如何,只要您使用相同的连接字符串,您在后续调用中都将获得相同的基础连接。让池子做好自己的工作;不用讲代码。

这也避免了当您开始拥有两个线程时发生的问题……现在每个线程都可以在自己的连接上工作;如果使用static(假设您不使用[ThreadStatic]),则必须进行同步,从而引入延迟。更不用说重新进入(即,一个线程试图同时使用两次相同的连接)。是的;
不用讲代码。现在很好,您所做的几乎任何更改都将使它不正确。



 类似资料:
  • 我在自定义视图的不同方法中多次使用同一个光标。我应该在每次使用后关闭光标还是可以一直打开直到视图被破坏?对于数据库也是一样,一旦创建了包含此视图的活动,就可以打开它吗?当活动被销毁时,它可以关闭吗?我不断收到一个错误“close()从未在数据库上显式调用过…”当我按照上述方法操作时。

  • 问题内容: 我在ORM上还很新。我刚刚开始阅读有关使用Hibernate的Java Persistence API的书籍和文档。 我只是想知道,关闭EntityManagerFactory与jdbc数据库连接关闭类似吗? 我们是否应该在每次持久/更新/删除后关闭它?如果我们不关闭它,数据库连接会保持打开状态吗? 问题答案: 我只是想知道,关闭与jdbc数据库连接关闭类似吗? 这并非完全正确,但关闭

  • 问题内容: 我并不像php开发人员,但我必须使用它,而且我不太了解PHP在会话期间如何处理内存分配。 我正在开发一个要求进行HTTP身份验证的应用程序,一旦登录,便可以通过一个漂亮的界面来操作数据。 有人在另一篇文章中告诉我,我不应该在每次执行后关闭mysql数据连接,但是我不知道在使用此应用程序期间该连接如何保持内存,因为在服务器端我不知道PHP保留了什么内容记忆与否。 所以我的问题是我应该使用

  • 问题内容: 我想知道如果不关闭ResultSet是否可以将其关闭?我有一个ResultSet已关闭异常,但是我确定我没有在任何地方关闭ResultSet。我的确切做法是,我使用ResultSet来执行SELECT查询,然后使用相同的ResultSet,因为此方法调用了ResultSet: 那么,另一个问题是:有没有一种方法可以确保打开ResultSet? 第三个问题:也许是问题所在,因为我从不关闭

  • 问题内容: 我在C#/ ASP.NET 4应用程序中使用Booksleeve库。当前,RedisConnection对象是我的MonoLink类中的一个静态对象。我应该保持此连接处于打开状态,还是应该在每次查询/事务处理之后打开/关闭该连接(就像我现在所做的那样)?只是有些困惑。到目前为止,这是我的使用方式: 预先感谢您的任何回应/见解。另外,该库是否有任何官方文档?谢谢你^ _ ^。 问题答案:

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A