1

UNION 句を処理するときにいくつかの例外をスローできる C# の SQL 処理コードがあります。それに応じて処理するために、どの特定の例外がスローされているかを検出したいと思います。アプリケーションをテストすると、次の 2 つのエラーがスローされます。

ここに画像の説明を入力

ここに画像の説明を入力

それぞれを区別し、どれが投げられたかを認識するにはどうすればよいですか? if-statementフィールド名とスキーマが常に同じであるとは限らないため、単純にエラー メッセージをコピーして貼り付けて配置することはできません。

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

3 に答える 3

3

キャッチしている SqlException には、エラー番号などの豊富な情報があります。これにより、条件を個別に処理できます。

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

于 2013-03-16T14:29:47.080 に答える
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!");

この問題を回避するための多くの方法の 1 つにすぎません :)

于 2013-03-16T14:30:50.197 に答える
1

SqlException には、確認できるNumber プロパティ ( http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx ) があります。

詳細については、この回答をご覧ください。同じようです: https://stackoverflow.com/a/6222003/1758762

于 2013-03-16T14:29:33.787 に答える