如果出现异常,以下代码是否使连接保持打开状态?
我使用的是 Microsoft SQL 精简版数据库。
try
{
SqlCeConnection conn = new SqlCeConnection(ConnectionString);
conn.Open();
using (SqlCeCommand cmd =
new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
{
// do some stuff
}
conn.Close();
}
catch (Exception ex)
{
ExceptionManager.HandleException(ex);
}
当然更好的方法是在 try 之前声明一个连接对象,在 try block 中建立连接并在 finally block 中关闭它?
SqlCeConnection conn = null;
try
{
conn = new SqlCeConnection(ConnectionString);
conn.Open();
using (SqlCeCommand cmd =
new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
{
// do some stuff
}
}
catch (Exception ex)
{
ExceptionManager.HandleException(ex);
}
finally
{
if( conn != null ) conn.Close();
}
最佳答案
在 using
block 的帮助下,您在代码中处理 SqlCeCommand
的方式,您可以对 SqlCeConnection
执行相同的操作。
SqlCeConnection conn;
using (conn = new SqlCeConnection(ConnectionString))
{
conn.Open();
using (SqlCeCommand cmd =
new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
{
// do some stuff
}
}
注意:您可以对实现 IDisposable
的类使用 using
block 。
编辑:这与
相同try
{
conn = new SqlCeConnection(ConnectionString);
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "...";
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
引用:http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection%28VS.80%29.aspx
关于c# - 发生异常时关闭数据库连接的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681097/