sqlConnection /命令使用语句+ try / catch块

时间:2014-01-15 09:23:04

标签: c# sql exception using-statement

在try / catch中使用或使用try / catch内部的正确方法是什么?

using (SqlConnection connection = CreateSqlConnection(connString))
{
               using (SqlCommand command = CreateSqlCommand()
               {
                   try{//open connection + execute command + do something else}
                   catch{//do something}
               }
}

VS

try
{
    using (SqlConnection connection = CreateSqlConnection(connString))
    {
               using (SqlCommand command = CreateSqlCommand()
               {
                   //open connection + execute command + do something else
               }
    }
}
catch
{
 //do something
}

3 个答案:

答案 0 :(得分:5)

从我的观点来看:

try
{
    using (SqlConnection connection = CreateSqlConnection(connString))
    {
               using (SqlCommand command = CreateSqlCommand()
               {
                   //open connection + execute command + do something else
               }
    }
}
catch
{
 //do something
}

以上是正确的方法。

因为使用这种方法,如果与数据库的连接存在异常,那么它将被捕获到catch块中..但是第一种方法,它不会。

答案 1 :(得分:1)

两者都是正确的,因为两者都会在出现错误时关闭可支配资源。

你放置try-catch-statement的地方应该取决于你想对这些信息做什么,即如果你想对有关SqlCommand本身的错误或更普遍的SQL错误作出反应,那也可能涉及连接。

答案 2 :(得分:1)

就个人而言,我认为最好的方法是 - 然后关闭连接,你可以按照自己的意愿处理异常

using (SqlConnection connection = CreateSqlConnection(connString))
{
    using (SqlCommand command = CreateSqlCommand()) 
    {
          try { //open connection, execute }
          catch { // log and handle exception }
          finally { // check connection state and close if required }
    }
}