low*_*ern 15 .net c# database-connection sql-server-ce
如果存在异常,以下代码是否会打开连接?
我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
当然更好的方法是在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();
}
Run Code Online (Sandbox Code Playgroud)
sha*_*esh 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
}
}
Run Code Online (Sandbox Code Playgroud)
注意:您可以using对实现的类使用块IDisposable.
编辑:这和
try
{
conn = new SqlCeConnection(ConnectionString);
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "...";
cmd.ExecuteNonQuery();
}
finally
{
conn.Close();
}
Run Code Online (Sandbox Code Playgroud)
参考: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.
}
Run Code Online (Sandbox Code Playgroud)
try
catch
finally
Run Code Online (Sandbox Code Playgroud)
是处理此问题的正确方法,因为连接应始终在最后关闭。但您不仅应该检查这一点conn != null,还应该conn检查 state 是否不是Closed。
| 归档时间: |
|
| 查看次数: |
34837 次 |
| 最近记录: |