如何确定SQLite UpdateException上的正确约束违规?

时间:2012-07-19 16:42:33

标签: c# database sqlite try-catch updateexception

我在本地SQLite数据库中遇到以下问题。我正在尝试使用在线SQL-Server数据库更新通过同步过程存储的数据。 虽然同步化没有问题,但在尝试更新本地值时经常会遇到错误。 例如。每个表上可能存在违反现有Primary-Key-Constraints的情况。另一方面,在具体的桌子上也可能违反了Unique-Key。

我的问题是如何确定发生了哪种类型的错误。

我抓住数据库更新或插入

catch(UpdateException ue)
{
    HandleUpdateException(ue);
}

handle方法如下:

private void HandleUpdateException(UpdateException e)
{
    // get inner exception as SQLiteException
    var innerException = e.InnerException as SQLiteException;

    if(innerException != null)
    {
        switch(innerException.ErrorCode)
        {
            case SQLiteError.Constraint:
                // handle constraint-error here
                break;
            default:
                // log error
                break;
        }
    }
}

我现在如何发生错误?重要的是要知道,因为PK违规的处理完全不是违反英国的行为。

我可以尝试制作

if(e.Message.Contains("unique")) // ...

if(e.Message.Contains("foreign")) // ...

但是我不想用“魔术”字符串检查这种错误。

所以任何帮助都会受到赞赏。

0 个答案:

没有答案