0

我对打开和关闭 SQL 连接有疑问。哪一个更好:

  1. 在事件中打开连接并在form_load事件中关闭它form_closing
  2. 打开和关闭每个呼叫的连接。

当然有时我需要经常读取数据。

4

7 回答 7

2

通常,您应该尽可能短时间地保持数据库连接打开。

因此,在一个using块中为每个调用打开和关闭每个连接以确保处理。

我要补充一点,这一切都不应该发生在表单中——表单应该关注处理 UI 和 UI 事件——打开和关闭连接应该发生在您的数据访问层中。

于 2013-01-19T18:05:41.517 回答
1

我建议你最好选择方法2,如果你选择1,可能会导致其他问题

于 2013-01-20T10:13:15.037 回答
0

您绝对应该选择 2 号。尤其是在您不知道用户将占用连接多长时间的表单中。

请记住在声明连接时使用 Using 语句,这样您就可以确定无论发生什么,连接都会再次关闭。

于 2013-01-19T18:20:41.597 回答
0

这取决于您要如何/何时使用连接。但是,您应该启用连接池,这应该通过在池中为您保持可用连接来减少打开和关闭多个连接。

于 2013-01-19T18:05:37.477 回答
0

最佳做法是尽快关闭您的 sqlconnection,因此使用 sqlconnection 和 using(它实现 IDisposable 接口),如下所示:

using (SqlConnection con = new SqlConnection(connectionString))
    {
        //
        // Open the SqlConnection.
        //
        con.Open();
              //do your process
            }
于 2013-01-19T18:42:39.057 回答
0

我会选择第二个,因为并不总是需要与数据库进行交互。通常我们加载数据和保存数据。当与数据库的交互很激烈并且打开和关闭连接的成本很高时,长时间打开连接很有用。与数据库交互的代码应该从UI中分离出来,放在数据访问层。您可以创建一个单独的类库来执行数据库操作,或者至少在同一个项目中为数据库创建类。

打开连接的一般准则是尽可能晚地打开打开连接并尽快关闭连接

于 2013-01-19T18:05:53.517 回答
0

我绝对建议按需打开和关闭连接。由于连接池打开连接相当便宜,这意味着您不必每次使用它时都检查连接以确保它仍然打开。

于 2013-01-19T18:05:57.903 回答