2017-07-06 57 views
0

我试图迫使一个错误条件的已使用以下步骤删除之后更新的行测试一些异常处理时:SQLite的 - 没有错误更新已删除的行

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导致此相同的行为。

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

+2

它可能正在读取/写入日志文件。代替步骤2-4,编写一些额外的代码来删除记录并尝试保存。请阅读https://stackoverflow.com/questions/26209091/what-is-the-journal-sqlite-database-in-android阅读! – petey

回答

0

我不完全确定sql3数据提供者。但是,您希望使用查询功能,而不是非查询进行删除。获取查询中受删除影响的行。然后在没有行被返回时抛出和异常广告所需的场景。

+0

从'sqlite3'命令行界面运行'delete'语句后''从'Mono.Data.Sqlite'提供程序调用'ExecuteNonQuery()'。 – samosaris

1

更新行不会在sql中引发任何错误/异常。 当在数据库更新查询中找不到某行时不执行任何操作并且不显示错误/异常消息。

+0

我会测试一下。我更喜欢在测试时不添加代码来破解东西,因为它需要改变它。我倾向于尽可能地引入*“真实世界”场景,但为此我会给** petey **建议尝试(重命名DB文件给出足够的异常以测试关联的try/catch,所以我没有继续前进,但现在有兴趣观察这种行为)。 – samosaris

1

更新查询不会引发任何错误。