我对打开和关闭 SQL 连接有疑问。哪一个更好:
- 在事件中打开连接并在
form_load
事件中关闭它form_closing
。 - 打开和关闭每个呼叫的连接。
当然有时我需要经常读取数据。
通常,您应该尽可能短时间地保持数据库连接打开。
因此,在一个using
块中为每个调用打开和关闭每个连接以确保处理。
我要补充一点,这一切都不应该发生在表单中——表单应该关注处理 UI 和 UI 事件——打开和关闭连接应该发生在您的数据访问层中。
我建议你最好选择方法2,如果你选择1,可能会导致其他问题
您绝对应该选择 2 号。尤其是在您不知道用户将占用连接多长时间的表单中。
请记住在声明连接时使用 Using 语句,这样您就可以确定无论发生什么,连接都会再次关闭。
这取决于您要如何/何时使用连接。但是,您应该启用连接池,这应该通过在池中为您保持可用连接来减少打开和关闭多个连接。
最佳做法是尽快关闭您的 sqlconnection,因此使用 sqlconnection 和 using(它实现 IDisposable 接口),如下所示:
using (SqlConnection con = new SqlConnection(connectionString))
{
//
// Open the SqlConnection.
//
con.Open();
//do your process
}
我会选择第二个,因为并不总是需要与数据库进行交互。通常我们加载数据和保存数据。当与数据库的交互很激烈并且打开和关闭连接的成本很高时,长时间打开连接很有用。与数据库交互的代码应该从UI中分离出来,放在数据访问层。您可以创建一个单独的类库来执行数据库操作,或者至少在同一个项目中为数据库创建类。
打开连接的一般准则是尽可能晚地打开打开连接并尽快关闭连接
我绝对建议按需打开和关闭连接。由于连接池打开连接相当便宜,这意味着您不必每次使用它时都检查连接以确保它仍然打开。