7

データベース操作を別の方法で実行しながら、さまざまな問題を処理したいと考えています。

例: データベースの資格情報が間違っているか、ネットワークの問題が原因で操作が失敗する場合があります。または、クエリが正しくないために失敗する可能性があります (int型の列に文字列値が渡されている場合)

私のC#コードでは、SqlExceptionのコレクションを持つものだけがありSqlErrorsます。ただし、多くの重大度レベルがあります。

SqlException の原因を簡単に特定するにはどうすればよいですか? 例外が接続の問題または認証の失敗によるものか、クエリの問題によるものかを判断するにはどうすればよいですか。

SQL Server 2005 を使用しています。

4

2 に答える 2

10

このようなことを試してみてください。これは、さまざまな条件を処理するのに役立ちます。

次のように try catch ブロックを使用します。

try    
{
  ...
  ...
}
catch (SqlException ex)
{
  switch (ex.Number) 
    { 
        case 4060: // Invalid Database 
                  ....
                  break;

        case 18456: // Login Failed 

                  ....

                  break;

        case 547: // ForeignKey Violation 

                  ....

                  break;

        case 2627: 
                // Unique Index/ Primary key Violation/ Constriant Violation 

                  ....

                  break;

        case 2601: // Unique Index/Constriant Violation 

                  ....

                  break;

        default: 

                  ....

                  break;    

       } 
}
于 2011-01-28T06:24:37.410 に答える
1

SQLException重大度レベルを示すプロパティを公開しClassます。

詳細はこちら

于 2011-01-28T06:10:07.147 に答える