1

C# で Error in try-を処理する方法に問題がありcatchます。

例 データベースにレコードを削除するコードを書きましたが、このレコードには別のテーブルへの FK があります。これをどのように処理しますか?

try
{
     // delete record in database
}
catch (Exception ex)
{
    int error = // how to get this code exception      
}
4

6 に答える 6

2

一般の代わりにSQLExceptionをキャッチExceptionし、そのNumberプロパティを使用することができます

 catch (SqlException ex)
    {
     Console.WriteLine(ex.Number);
    }
于 2012-09-04T10:15:28.833 に答える
0
try
{
    // your code to run
}
catch(SqlException ex)
{
    Console.WriteLine(ex.Message);
} 
// Catch all Exceptions
catch(Exception)
{
    Console.WriteLine(Message);
}
于 2012-09-04T10:37:22.613 に答える
0

にはエラー タイプのException詳細が保持されます。特定のタイプの例外をキャッチする場合は、キャッチでそのタイプを使用します。例えば:

 catch (SqlException sqlex)
 {

 }
于 2012-09-04T10:15:24.273 に答える
0

Win32 に使用できますMarshal.GetLastWin32Error()。データベースには SqlException クラスを使用します。

于 2012-09-04T10:16:25.920 に答える
0
try
{  
  //exec delete command
}
catch (SQLException e)
{
  //if SQL error indicates referential integrity violation
    throw ReferentialIntegrityViolationException// or whatever
}
于 2012-09-04T10:19:47.047 に答える
0
try
{
    # SQL Stuff
}
catch (SqlException ex)
{
    if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
    {
        switch (ex.Errors[0].Number)
        {
            case 547: // Foreign Key violation
                throw new InvalidOperationException("Some helpful description", ex);
                break;
            case 2601: // Primary key violation
                throw new DuplicateRecordException("Some other helpful description", ex);
                break;
            default:
                throw new DataAccessException(ex);
        }
    }

}

外部キー違反に従って

見てみましょう: how-to-handle-db-exception-in-c-sharp

これにより、外部キー エラーを正確に特定する方法がわかります。

外部キーを含むMSDN行の削除も見てください

これは、カスケードをオンに設定することについて説明しています-これは、あなたが見逃していると私が信じているものです。

于 2012-09-04T10:20:23.623 に答える