C# で SQL Server のエラー コードから主キーの重複エラーを特定する方法を知りたいです。
例として、SQL Server データベースにデータを入力する C# フォームがあります。データ入力中にエラーが発生した場合、例外からエラーの理由を特定するにはどうすればよいですか?
C# で SQL Server のエラー コードから主キーの重複エラーを特定する方法を知りたいです。
例として、SQL Server データベースにデータを入力する C# フォームがあります。データ入力中にエラーが発生した場合、例外からエラーの理由を特定するにはどうすればよいですか?
SqlExceptionをキャッチしてその番号を確認すると、その番号2627
は一意性制約(主キーを含む)の違反を意味します。
try
{
// insertion code
}
catch (SqlException ex)
{
if (ex.Number == 2627)
{
//Violation of primary key. Handle Exception
}
else throw;
}
これは、データベースが複製されているかどうかに関係なく発生する可能性のある一般的なエラーです。レプリケートされたデータベースでは 、トポロジ全体で主キーが適切に管理されていないため、通常、エラーが発生します。
フィルターのみの重複主キー違反例外の作業コード
using System.Data.Entity.Infrastructure;
using System.Data.SqlClient;
.........
try{
abc...
}
catch (DbUpdateException ex)
{
if (ex.InnerException.InnerException is SqlException sqlEx && sqlEx.Number == 2601)
{
return ex.ToString();
}
else
{
throw;
}
}
細かな点に注意してください:- ex.InnerException.InnerException ではなく ex.InnerException