为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
泛舟湖上清波郎朗 2021-12-05 16:46:58
我编写了一个支持 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;}有人可以帮我吗?
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

该功能从 1.0.70.0 版本开始添加:


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


1.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);

}


查看完整回答
反对 回复 2021-12-05
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信