C# で Error in try
-を処理する方法に問題がありcatch
ます。
例 データベースにレコードを削除するコードを書きましたが、このレコードには別のテーブルへの FK があります。これをどのように処理しますか?
try
{
// delete record in database
}
catch (Exception ex)
{
int error = // how to get this code exception
}
C# で Error in try
-を処理する方法に問題がありcatch
ます。
例 データベースにレコードを削除するコードを書きましたが、このレコードには別のテーブルへの FK があります。これをどのように処理しますか?
try
{
// delete record in database
}
catch (Exception ex)
{
int error = // how to get this code exception
}
一般の代わりにSQLExceptionをキャッチException
し、そのNumberプロパティを使用することができます
catch (SqlException ex)
{
Console.WriteLine(ex.Number);
}
try
{
// your code to run
}
catch(SqlException ex)
{
Console.WriteLine(ex.Message);
}
// Catch all Exceptions
catch(Exception)
{
Console.WriteLine(Message);
}
にはエラー タイプのException
詳細が保持されます。特定のタイプの例外をキャッチする場合は、キャッチでそのタイプを使用します。例えば:
catch (SqlException sqlex)
{
}
Win32 に使用できますMarshal.GetLastWin32Error()
。データベースには SqlException クラスを使用します。
try
{
//exec delete command
}
catch (SQLException e)
{
//if SQL error indicates referential integrity violation
throw ReferentialIntegrityViolationException// or whatever
}
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行の削除も見てください
これは、カスケードをオンに設定することについて説明しています-これは、あなたが見逃していると私が信じているものです。