如何处理SqlException

时间:2013-03-16 14:25:52

标签: c# .net sql sql-server database

我在C#中有一些SQL处理代码,在处理UNION子句时会抛出许多异常。我想检测抛出哪个特定异常,以便相应地处理它。在测试我的应用程序时,会抛出这两个错误:

enter image description here

enter image description here

如何区分每一个并识别哪一个被抛出?我不能简单地复制/粘贴错误消息并将其放在if-statement中,因为字段名称和架构并不总是相同。

try
 {
   adapter.Fill(dtResults);
 }
 catch (SqlException ex)
 {
 }

3 个答案:

答案 0 :(得分:3)

您正在捕获的SqlException包含有关它的丰富信息,例如错误号。这允许您单独处理条件:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx

答案 1 :(得分:2)

catch语句中,您可以使用:

   if (ex.ToLower.Contains("conversion failed")
       MessageBox.Show("Error: a conversion failed");
   if (ex.ToLower.Contains("multi-part identifier")
       MessageBox.Show("this is the other error!");

只有一种方法可以解决这个问题:)

答案 2 :(得分:1)

SqlException有一个可以检查的Number属性(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx)。

看一下这个答案的细节,看起来是一样的:https://stackoverflow.com/a/6222003/1758762