如果无法插入数据则显示错误
Show error if data cannot be inserted
当非唯一数据插入数据库时,我需要处理一个错误。我有这个代码:
try {
handler.addBookmark(new BookmarkModel(idBrand, brand, desc, types, detail, image));
Toast.makeText(this, "Success", Toast.LENGTH_LONG).show();
}catch (SQLiteException e){
e.printStackTrace();
Toast.makeText(this, "Failed", Toast.LENGTH_LONG).show();
}
我这样插入:
public long addBookmark(BookmarkModel bookmark) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, bookmark._id); // Must Unique
values.put(KEY_BRAND, bookmark.brandName);
values.put(KEY_DESC, bookmark.descTerm);
values.put(KEY_TYPE, bookmark.type);
values.put(KEY_DETAIL, bookmark.detail);
values.put(KEY_IMAGE, bookmark.image);
return db.insert(TABLE_BOOKMARK, null, values);
//db.close();
}
Logcat发生的错误:
android.database.sqlite.SQLiteConstraintException: column id is not unique (code 19)
数据没有插入,但我无法显示错误信息。我怎样才能显示祝酒词让用户知道插入失败?
不要自己设置_id
。这一行应该消失了:
values.put(KEY_ID, bookmark._id); // Must Unique
如果您的 table 架构设置正确 (_id INTEGER PRIMARY KEY
),那么这是自动递增的 long 值。插入时没有任何内容。
我找到了解决办法。只需将 id 设置为 PRIMARY KEY AUTOINCREMENT 并设置 1 text UNIQUE 。对于处理错误的方法,我使用 insertOrThrow 并将其与 try-catch 一起使用。
您应该查看 insertOrThrow()
方法,如果发生这种情况,该方法将抛出 SQLiteConstraintException。
然后,您可以将插入内容放入 try/catch 块中:
try{
db.insertOrThrow(table, columnHack, values);
} catch (SQLiteConstraintException e){
Toast.makeText(context, "Unable to insert values.", Toast.LENGTH_SHORT).show();
}
当非唯一数据插入数据库时,我需要处理一个错误。我有这个代码:
try {
handler.addBookmark(new BookmarkModel(idBrand, brand, desc, types, detail, image));
Toast.makeText(this, "Success", Toast.LENGTH_LONG).show();
}catch (SQLiteException e){
e.printStackTrace();
Toast.makeText(this, "Failed", Toast.LENGTH_LONG).show();
}
我这样插入:
public long addBookmark(BookmarkModel bookmark) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, bookmark._id); // Must Unique
values.put(KEY_BRAND, bookmark.brandName);
values.put(KEY_DESC, bookmark.descTerm);
values.put(KEY_TYPE, bookmark.type);
values.put(KEY_DETAIL, bookmark.detail);
values.put(KEY_IMAGE, bookmark.image);
return db.insert(TABLE_BOOKMARK, null, values);
//db.close();
}
Logcat发生的错误:
android.database.sqlite.SQLiteConstraintException: column id is not unique (code 19)
数据没有插入,但我无法显示错误信息。我怎样才能显示祝酒词让用户知道插入失败?
不要自己设置_id
。这一行应该消失了:
values.put(KEY_ID, bookmark._id); // Must Unique
如果您的 table 架构设置正确 (_id INTEGER PRIMARY KEY
),那么这是自动递增的 long 值。插入时没有任何内容。
我找到了解决办法。只需将 id 设置为 PRIMARY KEY AUTOINCREMENT 并设置 1 text UNIQUE 。对于处理错误的方法,我使用 insertOrThrow 并将其与 try-catch 一起使用。
您应该查看 insertOrThrow()
方法,如果发生这种情况,该方法将抛出 SQLiteConstraintException。
然后,您可以将插入内容放入 try/catch 块中:
try{
db.insertOrThrow(table, columnHack, values);
} catch (SQLiteConstraintException e){
Toast.makeText(context, "Unable to insert values.", Toast.LENGTH_SHORT).show();
}