在exception情况下关闭数据库连接的正确方法
如果存在exception,以下代码是否会打开连接?
我正在使用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(); }
您在代码中using
块处理SqlCeCommand
的方式,您可以对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
类使用using
块。
编辑:这和
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
使用Using
using(SqlConnection conn = new SqlConnection()) { //put all your code here. }
try catch finally
是处理此问题的正确方法,因为连接应始终在最后关闭。 但你不仅要检查conn != null
,还要检查conn
state是否为Closed
。
为什么不在连接和命令周围使用?
您应该使用using
语句,它可以轻松处理连接关闭http://davidhayden.com/blog/dave/archive/2005/01/13/773.aspx
你必须尝试以下方式。 因为Connection Close In Finally Block
try { SqlCeConnection conn = new SqlCeConnection(ConnectionString); conn.Open(); using (SqlCeCommand cmd = new SqlCeCommand("SELECT stuff FROM SomeTable", conn)) { // do some stuff } } catch (Exception ex) { } finally { \\close connection here }