【问题标题】:Sqlite database InsertOrThrow line not executed giving FATAL EXCEPTION - AndroidSqlite 数据库 InsertOrThrow 行未执行给出致命异常 - Android
【发布时间】:2015-01-08 06:59:24
【问题描述】:

这是我在其中插入数据的数据库方法... 它工作正常,突然间,它开始发出致命异常

public boolean insertReport(String name, String title, String date, String status) {

        db.beginTransaction();
        try {
            ContentValues cv = new ContentValues();
            cv.put("name", name);
            cv.put("elabel_title", title);
            cv.put("date", date);
            cv.put("status", status);

            db.insertOrThrow("savedreports", null, cv);
            db.setTransactionSuccessful();
        } catch (SQLiteConstraintException e) {
            return false;
        } finally {
            db.endTransaction();
        }
        return true;
    }

我使用断点调试它, 一切顺利,但在执行cv.put("status", status); 行后,它直接跳转到finally 块:/
不执行 insertOrThrow...
我做错了什么???

【问题讨论】:

  • 从日志猫发布您的错误消息!没有它,我们所能做的就是猜测

标签: java android database sqlite exception


【解决方案1】:

我遇到了同样的问题,这是我认为的简单解决方案。

您的数据库列中肯定不存在“状态”列,请检查。

问题出在这条线上

cv.put("status", status); 

可能是您没有将此“状态”列添加到您的数据库中。 因为没有找到任何状态栏所以跳出来了。

【讨论】:

  • 这不是问题。 ContentValues 对数据库一无所知。
  • @Salmaan 是的,但在这里不会失败。
  • 是的@laalto 它并没有在那里失败,它跳到 finally 块并在执行 db.endTransaction();即没有 db.insertOrThrow("savedreports", null, cv);和 db.setTransactionSuccessful();给了致命的例外
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
相关资源
最近更新 更多