C# SqlConnection和SqlCommand编程模式:哪一种更好?
这两种方法中哪一种更好?为什么呢?第一个版本更好,因为您不必记得关闭连接,因为C# SqlConnection和SqlCommand编程模式:哪一种更好?,c#,sql,sql-server,C#,Sql,Sql Server,这两种方法中哪一种更好?为什么呢?第一个版本更好,因为您不必记得关闭连接,因为SqlConnection被包装在using语句中。不需要在第一个版本中调用conn.Close()。根据经验法则,连接将在的finally块中关闭: 始终处置IDisposables 使用和最简单 所以…你能把你的代码显示为纯文本而不是图像吗?“更好”有点主观。最好询问您是否有特定的问题。第一个问题是因为它使用了usingSqlCommand确实实现了IDisposable,因为它源于组件。否则代码甚至无法编译。
SqlConnection
被包装在using语句中。不需要在第一个版本中调用conn.Close()
。根据经验法则,连接将在的finally
块中关闭:
- 始终处置
IDisposable
s
- 使用
和最简单
所以…你能把你的代码显示为纯文本而不是图像吗?“更好”有点主观。最好询问您是否有特定的问题。第一个问题是因为它使用了using
SqlCommand
确实实现了IDisposable
,因为它源于组件
。否则代码甚至无法编译。因此,是的,我会使用
语句保留。@JonSkeet我没有意识到这一点:(.我会更正我的答案。谢谢我有点不同意您的观点,没有必要对SqlCommand对象语句使用using。SqlCommand
间接继承自实现终结器的组件。using
语句的另一个好处是,一旦退出de>using
块-这意味着即使抛出异常,您的连接仍将被释放。在第二个示例中并非如此。
private void a()
{
string query = "";
using (SqlConnection conn = new SqlConnection("connectionstring here"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.ExecuteQuery();
}
conn.Close();
}
}
private void B()
{
string query = "";
SqlConnection conn = new SqlConnection("connectionstring here");
conn.Open();
SqlCommand cmd = new SqlCommand(query, conn);
cmd.ExecuteQuery();
conn.Close();
}