在 C# CLI 应用程序中检查 SQLiteException “extended”

我编写了一个支持 SQLite 的 CLI 应用程序。为此,我使用SQLite 开发团队的 NuGet 包“ System.Data.SQLite ”。一切正常,但是如果出现异常,如何检查“扩展结果代码(查看第 5 点) ”?


我可以访问 Enum SQLiteErrorCode 中的所有错误代码,但在“ex.ResultCode”中始终是主要结果代码(查看第 4 点)。


例如


try

{

    // DB actions ....

}

catch (SQLiteException ex)

{

    // This is what i want because is clear and easy to read

    if (ex.ResultCode == SQLiteErrorCode.Constraint_Unique)

    {

        Debug.Write("SQLiteError: " + ex.Message);

    }


    // This works, but is not nice

    if (ex.ResultCde == SQLiteErrorCode.Constraint && ex.Message.Contains("UNIQUE"))

    {

        Debug.Write("SQLiteError: " + ex.Message);

    }


    throw ex;

}

有人可以帮我吗?


泛舟湖上清波郎朗
浏览 152回答 1
1回答

繁星coding

该功能从 1.0.70.0 版本开始添加:https://system.data.sqlite.org/index.html/doc/trunk/www/news.wiki1.0.70.0 - 2011 年 4 月 22 日通过 SetExtendedResultCodes()、ResultCode() 和 ExtendedResultCode() 添加了对 sqlite3_extended_result_codes()、sqlite3_errcode() 和 sqlite3_extended_errcode() 的支持。通过 SQLiteLogEventHandler() 添加了对 SQLITE_CONFIG_LOG 的支持。要使用它:conn.Open();conn.SetExtendedResultCodes(true);您可以捕获异常:if (ex.ResultCode == SQLiteErrorCode.Constraint_Unique){Debug.Write("SQLiteError: " + ex.Message);}
打开App,查看更多内容
随时随地看视频慕课网APP