26

C# で SQL Server のエラー コードから主キーの重複エラーを特定する方法を知りたいです。

例として、SQL Server データベースにデータを入力する C# フォームがあります。データ入力中にエラーが発生した場合、例外からエラーの理由を特定するにはどうすればよいですか?

4

4 に答える 4

65

SqlExceptionをキャッチしてその番号を確認すると、その番号2627は一意性制約(主キーを含む)の違反を意味します。

try
{
    // insertion code
}
catch (SqlException ex)
{
    if (ex.Number == 2627)
    {
        //Violation of primary key. Handle Exception
    }
    else throw;
}

MSSQL_ENG002627

これは、データベースが複製されているかどうかに関係なく発生する可能性のある一般的なエラーです。レプリケートされたデータベースでは 、トポロジ全体で主キーが適切に管理されていないため、通常、エラーが発生します。

于 2013-03-05T07:06:23.237 に答える
0

フィルターのみの重複主キー違反例外の作業コード

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

于 2019-04-09T09:31:54.370 に答える