如果有异常,以下代码是否会打开连接?
我正在使用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块内建立一个连接并在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();
}
答案 0 :(得分:29)
在SqlCeCommand
块的帮助下,您在代码中处理using
的方式,您可以对SqlCeConnection
执行相同操作。
SqlCeConnection conn;
using (conn = new SqlCeConnection(ConnectionString))
{
conn.Open();
using (SqlCeCommand cmd =
new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
{
// do some stuff
}
}
注意:您可以对实现using
的类使用IDisposable
块。
编辑:这与
相同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
答案 1 :(得分:8)
使用Using
using(SqlConnection conn = new SqlConnection())
{
//put all your code here.
}
答案 2 :(得分:4)
try
catch
finally
是处理此问题的正确方法,因为连接应始终在结束时关闭。但是,您不仅要检查conn != null
,还要检查conn
状态是否为Closed
。
答案 3 :(得分:0)
为什么不在连接和命令周围使用?
答案 4 :(得分:0)
您应该使用using
语句,它可以轻松处理连接关闭
http://davidhayden.com/blog/dave/archive/2005/01/13/773.aspx
答案 5 :(得分:0)
你必须尝试以下方式。 因为Connection Close In Finally Block
foreach(User element in users){
if(element.Type == MyEnum.Label){
//Your logic
}else if(element.Type = MyEnum.Button){
//Your logic
}