以下代码如果出现异常,是否会保持连接开启?
我正在使用 Microsoft SQL Compact Edition 数据库。
我正在使用 Microsoft SQL Compact Edition 数据库。
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块内建立连接,并在finally块中关闭它。
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
语句时,它会调用正在使用的对象上的Dispose
方法,这将在SqlCeConnection
的情况下调用Close
方法。使用诸如ILSpy之类的工具查看在SqlCeConnection
上调用Dispose
时执行的代码。请参阅此处的文档:http://msdn.microsoft.com/en-us/library/bb300654%28v=vs.100%29.aspx。 - shahkalpesh