【问题标题】:SQLite - No error when updating a deleted rowSQLite - 更新已删除的行时没有错误
【发布时间】:2017-07-06 18:41:40
【问题描述】:

我正在尝试强制错误条件测试某些异常处理,方法是在使用以下步骤删除行后更新它:

1. Load record into GUI
2. Pull .db3 file to Windows
3. Delete record with sqlite3
4. Push .db3 file back to Android
3. Save record from GUI

但是,ExecuteNonQuery() 没有抛出异常,logcat 中也没有任何异常。

为什么,如果在第 3 步中,DB 文件被重命名为抛出异常,但在删除记录时却没有?


更新:使用sqlite3 直接从设备中删除记录会导致相同的行为。

注意:三星 Galaxy Tab2 需要 PIE(位置独立执行)版本。

【问题讨论】:

  • 它可能正在从日志文件中读取/写入。编写一些额外的代码来删除记录并尝试保存,而不是步骤 2-4。请参阅stackoverflow.com/questions/26209091/… 以获得良好的阅读体验!

标签: android xamarin sqlite xamarin.android


【解决方案1】:

更新一行不会在 sql 中引发任何错误/异常。 当在数据库更新查询中没有找到一行时,什么都不做并且不显示错误/异常消息。

【讨论】:

  • 我会测试一下。我不喜欢在测试时添加代码来破坏东西,因为它需要更改它。我更喜欢尽可能地引入 “真实世界” 场景,但为此我会给出 petey 的建议(重命名数据库文件给出了一个足以满足测试相关的 try/catch,所以我没有继续,但现在有兴趣观察这种行为)。
【解决方案2】:

更新查询不会抛出任何错误。

【讨论】:

    【解决方案3】:

    我不完全确定 sql3 数据提供程序。但是,您可能希望使用查询功能,而不是非查询来删除。获取查询中受删除影响的行。然后在没有返回行的情况下抛出和异常广告。

    【讨论】:

    • ExecuteNonQuery()delete 语句从sqlite3 命令行界面运行后从Mono.Data.Sqlite 提供程序调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多