捕获异常后关闭 SQL 连接是一种好习惯吗?
Is it a good practice to close an SQL connection after catching an Exception?
想知道我是否应该在发生错误后明确关闭我的 SQL 连接,或者这是否会自动完成?
假设我有一些点击事件
string conString = "something";
string query = "someQuery";
SqlConnection con = new SqlConnection(conString);
SqlCommand = new SqlCommand(query, con);
try {
con.Open()
//Something that will cause an error
} catch (Exception ex)
{
MessageBox.Show("Error Occurred")
con.Close()
}
这是最佳做法还是毫无意义?想法是在关闭消息框后重试该操作。
无论异常还是成功,您都应该在完成后清理连接,但这并不一定意味着调用 Close
。更常见的是,您只需使用 using
语句,它会在离开范围时调用清理 API (Dispose()
)。这很简单:
using (SqlConnection con = new SqlConnection(conString))
using (SqlCommand cmd = new SqlCommand(query, con))
{
con.Open();
//Something
}
或者在更新的 C# 版本中,如果 using
将在父作用域的末尾结束:
using var con = new SqlConnection(conString);
using var cmd = new SqlCommand(query, con);
con.Open();
//Something
你可以使用 Finally
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally
try
{
//exec
}
catch (Exception err)
{
// call error ;
}
finally
{
// close conn
}
想知道我是否应该在发生错误后明确关闭我的 SQL 连接,或者这是否会自动完成?
假设我有一些点击事件
string conString = "something";
string query = "someQuery";
SqlConnection con = new SqlConnection(conString);
SqlCommand = new SqlCommand(query, con);
try {
con.Open()
//Something that will cause an error
} catch (Exception ex)
{
MessageBox.Show("Error Occurred")
con.Close()
}
这是最佳做法还是毫无意义?想法是在关闭消息框后重试该操作。
无论异常还是成功,您都应该在完成后清理连接,但这并不一定意味着调用 Close
。更常见的是,您只需使用 using
语句,它会在离开范围时调用清理 API (Dispose()
)。这很简单:
using (SqlConnection con = new SqlConnection(conString))
using (SqlCommand cmd = new SqlCommand(query, con))
{
con.Open();
//Something
}
或者在更新的 C# 版本中,如果 using
将在父作用域的末尾结束:
using var con = new SqlConnection(conString);
using var cmd = new SqlCommand(query, con);
con.Open();
//Something
你可以使用 Finally https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch-finally
try
{
//exec
}
catch (Exception err)
{
// call error ;
}
finally
{
// close conn
}