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
我的问题是,我无法将异常(这是一个字符串)与长";字符串";我从试图复制身份证中得到的。
我是否可以对此进行比较,以便正确地解决此错误?
您应该捕获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;
}