我想问一下使用数据库连接和关闭它们的常用方法是什么。
这是我的程序,但我在一个例子中看到,connection.Close()将不会执行。
我应该在整个街区使用try-catch吗?因为某种原因,我看到大多数人都没有。
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand command = new SqlCommand())
{
command.CommandText = "procedure";
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
tmpParameter = DBUtils.createInSQLParam("@ImageID", SqlDbType.SmallInt, htmlImageId);
command.Parameters.Add(tmpParameter);
command.Connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
htmlImageDetails = GetHtmlImageDetailsFromReader(reader, true, out newId);
reader.Close();
}
connection.Close();
return htmlImageDetails;
}
}
答案 0 :(得分:5)
您不必明确地执行此操作,因为SqlConnection
实例将始终处置(然后,连接已关闭),这要归功于using
句法糖。
答案 1 :(得分:2)
我应该在整个街区使用try-catch吗?因为某种原因 我看到大多数人都没有。
没有。由于您使用的是using
语句,因此转换为try-finally
块,因此即使发生异常,也会确保对象的处理。
using Statement (C# Reference)
using语句确保调用Dispose,即使是也是如此 在对象上调用方法时发生异常。 您 通过将对象放在try块中可以实现相同的结果 然后在finally块中调用Dispose;其实这是怎么回事 using语句由编译器翻译。
SqlConnection.Dispose
确保关闭连接。
要确保始终关闭连接,请打开连接 在
using
块内,.......这样做可以确保连接 当代码退出块时自动关闭。
答案 2 :(得分:2)
您正在打开与using
块的连接,这意味着编译器将确保在连接上调用Dispose()
,这将调用Close()
。所以不用担心,即使是Close()
,您也不需要自己Exception
建立连接。