我在数据库中有我的表
CREATE TABLE Opponent (
Opponent_ID integer PRIMARY KEY AUTOINCREMENT,
Opponent_Add_Date text,
Opponent_Name text UNIQUE
);
然后我正在尝试将查询插入数据库
String query = "INSERT INTO Opponent (Add_Date, Opponent_Name) VALUES ('date' , 'name');"
问题出现了,当我想添加现有的对手名字时,我的应用程序粉碎了。如果我试图用SQLiteConstraintException
捕获我的异常,那么它允许添加两个具有相同名称的Opponents。为了抓住它,我正在使用:
try {
SQLiteStatement statement = mDataBase.compileStatement(query);
statement.execute();
} catch (SQLiteConstraintException e) {
Log.e("insert", "SQLException: " + e.getLocalizedMessage());
}
当有两个相同的名字被添加时,有人能告诉我如何抓住这一时刻吗?
答案 0 :(得分:0)
如果您只想在名称已存在的情况下不执行任何操作,则可以改为使用INSERT OR IGNORE。
但是,如果您还需要检索已存在的行的ID,那么您应该首先执行SELECT,并且仅在找不到行时才执行INSERT。