在我的代码中捕获sqlite throwables

时间:2014-04-20 08:26:40

标签: java android sql sqlite

我试图将记录添加到我的sqlite表中。

我在保存记录方面遇到了问题,我在logcat中看到了这一点。

但是我想用Toast提示用户说有问题以及错误是什么(写在logcat中)

我怎样才能捕获sqlite throwable并显示Toast?

sql捕获错误本身并不会将其抛给调用者?

public void addItem(Offer offer) {
    Log.d(MyLogger.TAG, "add saved-offer");
    // 1. get reference to writable DB
    SQLiteDatabase db = this.getWritableDatabase();

    // 2. create ContentValues to add key "column"/value
    ContentValues values = new ContentValues();
    values.put(KEY_UID, offer.getId().toString());
    values.put(KEY_ADDRESS, offer.getAddress());

    // 3. insert
    db.insert(TABLE_NAME, // table
            null, // nullColumnHack
            values); // key/value -> keys = column names/ values = column
                        // values

    String text = String.format("item was added to table: {0}", TABLE_NAME);
    Log.d(MyLogger.TAG, text);
    Toast.makeText(mContext, text, Toast.LENGTH_LONG);

    // 4. close
    db.close();
}

1 个答案:

答案 0 :(得分:1)

相关问题:SQLiteException not being caught

您需要使用方法db.insertOrThrow()而不是insert(),因为insert()不会抛出异常。但是,您仍然可以查看是否使用insert()失败。

请参阅此文档:SQLiteDatabase insert()

  

<强>返回       新插入行的行ID,如果发生错误,则为-1

至于获取异常并打印它,只需使用e.GetMessage()作为内容在catch块中进行吐司