我刚刚意识到我的一个数据库insert()命令由于违反了非空约束而失败 - 我只是没有将数据填入此字段。
问题是,我花了很多年才找出这个插入返回-1的原因,因为我无法在任何地方找到错误或异常。
我希望,我想对于更复杂的数据库和查询,最重要的是,从数据库中获取某些信息真正发生的事情会导致数据库访问失败,但我找不到任何有关此信息的信息。任何地方。
答案 0 :(得分:28)
我发现可以使用insertOrThrow()而不是insert,至少当出现错误时会出现异常,说android.database.sqlite.SQLiteConstraintException:错误代码19:约束失败 - 即使我真的希望/期望它会更清楚,并告诉我哪个列有错误左右,但也许我对SQLIte的特性要求太高了。
答案 1 :(得分:5)
你看过LogCat了吗?关于发生什么事情的原因通常都很冗长。