我试图将记录添加到我的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();
}
答案 0 :(得分:1)
相关问题:SQLiteException not being caught
您需要使用方法db.insertOrThrow()
而不是insert()
,因为insert()不会抛出异常。但是,您仍然可以查看是否使用insert()失败。
请参阅此文档:SQLiteDatabase insert()
<强>返回强> 新插入行的行ID,如果发生错误,则为-1
至于获取异常并打印它,只需使用e.GetMessage()作为内容在catch块中进行吐司