2013-05-14 26 views
1

如何在c#中的sql查询连接出现错误时使用try catch?如何对sql查询超时使用try catch错误?

如果我使用下面的简单代码,它可以工作,但发生错误所需的时间太长。我怎样才能让try catch更快地处理错误?

try 
{ 
    //sql command 
} 
catch 
{ 
    //display connection error 
} 
+1

看来你的命令超时太长。如果您使用的是ADO.NET,EF,Linq2SQL或其他? – dasheddot 2013-05-14 12:01:40

+0

使用“抛出新的Exception()”来引发闪电般的异常。 J/K – Serge 2013-05-14 12:02:34

+2

如果您担心的错误是超时,那么根据定义,您无法更快地处理它 - 超时的整个过程就是它耗时太长。如果您认为确定超时时间过长,请减少数据库连接的超时限制。 – anaximander 2013-05-14 12:03:21

回答

1

try-catch会在发生异常时立即捕获异常,但除了捕获超时发生前的超时异常之外的其他异常发生在之前。对于SqlCommand,默认的超时时间为30秒,但你可以通过设置CommandTimeout属性进行更改:

try 
{ 
    var command = new SqlCommand("..."); 
    command.CommandTimeout = 5; // 5 seconds 
    command.ExecuteNonQuery(); 
} 
catch(SqlException ex) 
{ 
    // handle the exception... 
} 
0

请通过以下方式:

try 
{ 
    con.open(); 
    . 
    .//Database operation 
    . 
    con.close(); 
} 
catch(Exception ex) 
{ 
    MessageBox.Show("Error: "+ex.Message);//If exception will come, it will handle it here. 
} 
finally 
{ 
con.close(); 
} 
2

,直到出现你无法捕捉异常。如果你想早点抓住它,可以更快地发生。具体来说,缩短超时时间。

我知道如何减少ColdFusion中的超时时间。我必须看看this page以了解如何在.net中执行此操作。

+0

+1“让错误更快发生”。 – 2013-05-14 12:10:23

0
catch (SqlException ex) 
    { 
     if (ex.Number == -2) 
     { 
      //handle timeout 
     }   
    } 
+1

尝试给出一个解释,而不仅仅是一小段代码。 – 2015-06-10 17:21:00