在C#CLI App中检查SQLiteException“ extended” ResultCode

时间:2018-08-20 14:52:33

标签: c# sqlite

我编写了一个具有SQLite支持的CLI应用程序。为此,我使用了SQLite开发团队的NuGet包“ System.Data.SQLite”。 一切正常,但是在出现异常的情况下如何取消“ Extended Result Codes (Look at point 5)”呢?

我可以访问Enum SQLiteErrorCode中的所有错误代码,但“ ex.ResultCode”中始终为Primary Result Code (Look at point 4)

例如

  items
    .filter(it => it.calories > 2) // native methods can be used, they return Item instances, not Arrays
    .isHealthy() // our custom methods also work
    .map(it => it.name)[0] //its a regular array with indices.

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

此功能是从1.0.70.0版本开始添加的:

https://system.data.sqlite.org/index.html/doc/trunk/www/news.wiki

1.0.70.0-2011年4月22日

增加了对sqlite3_extended_result_codes(),sqlite3_errcode(), 和sqlite3_extended_errcode()通过SetExtendedResultCodes(), ResultCode()和ExtendedResultCode()。增加了对 通过SQLiteLogEventHandler()进行SQLITE_CONFIG_LOG。

要使用它:

conn.Open();
conn.SetExtendedResultCodes(true);

您可以捕获到异常:

if (ex.ResultCode == SQLiteErrorCode.Constraint_Unique)
{
Debug.Write("SQLiteError: " + ex.Message);
}