C#将字符串与SqlExtension进行比较

本文关键字:比较 SqlExtension 字符串 | 更新日期: 2023-09-27 18:29:14

我目前正在C#asp.net页面上使用SQL。我在数据库中插入一个值,但如果ID重复,我会得到这个异常:

{"违反了PRIMARY KEY约束"PK_Section"。无法在对象"dbo.Section"中插入重复的键。''r''n语句已终止。}

我想做的是处理异常,比如:

  if(exception=={"Violation of PRIMARY KEY constraint 'PK_Section'. Cannot insert duplicate key in object 'dbo.Section'.'r'nThe statement has been terminated."})
  //update values instead of insert

我的问题是,我无法将异常(这是一个字符串)与长";字符串";我从试图复制身份证中得到的。

我是否可以对此进行比较,以便正确地解决此错误?

C#将字符串与SqlExtension进行比较

您应该捕获SqlException(可能是异常的InnerException)并检查其Number属性以识别异常。

请参阅http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number.aspx

我会使用try-catch块来检查SqlException。类似这样的东西:

 private bool SaveDocument()
 {
        bool saved = false;
        try
        {
            Save();
            saved = true;
        }
        catch (Exception ex)
        {
           string errorTitle = Resources.SaveErrorCaption;
           string errorText = Resources.SaveErrorText;
           Exception initialEx = ex;
            while (ex.InnerException != null)
            {
                if (ex.InnerException is SqlException)
                {
                    int errorNo = ((SqlException)ex.InnerException).Number;
                    if (errorNo == 2627)
                    {
                        errorTitle = Resources.DuplicateEntryErrorTitle;
                        errorText = Resources.DuplicateEntryErrorMessage;
                    }
                }
                ex = ex.InnerException;
            }
            MsgBox.Show(errorTitle, errorText,
                string.Format("{0}{1}StackTrace:{1}{2}", initialEx.Message, Environment.NewLine, initialEx.StackTrace),
                MsgBoxButtons.OK, MsgBoxImage.Error);
        }
         return saved;
}