【发布时间】:2012-05-15 18:19:42
【问题描述】:
我想做以下事情:我想检查我的数据库表是否已经存在。如果没有,它应该成功(createEntry)。一旦它创建了一条记录,我想继续用新信息更新同一条记录(updateEntry)(所以基本上用新信息覆盖第一条记录)。
我现在使用布尔值的问题是它创建了数据库(这很好),但是当我读取另一个二维码并想要更新我的记录中的信息时,它只是将信息写入第二条记录中。基本上它一直在做 createEntry 而不是 updateEntry。
布尔值可能有什么问题?我似乎找不到它。
private void insertQR(String doctorID, String doctorFullName, String patientID, String apiKey) {
DatabaseHelper databaseHelper = new DatabaseHelper(this);
databaseHelper.open();
boolean dbExist = checkDB();
if (dbExist == true)
{
databaseHelper.createEntry(doctorID, doctorFullName, patientID, apiKey);
}
databaseHelper.updateEntry(0,doctorID, doctorFullName, patientID, apiKey);
databaseHelper.close();
}
private boolean checkDB() {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase("/data/data/rem.med.artesis/databases/qrreader.db", null,
SQLiteDatabase.OPEN_READONLY);
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
}
return checkDB != null ? true : false;
}
}
【问题讨论】:
-
你正在检查你想要的错误的东西。您需要检查条目是否存在。如果存在,请更新它。如果没有,则创建它。
-
我认为你应该有一些你想要更新的条件,比如某些类型的 ID,如果它匹配然后更新表,或者你可以使用某种会更新的 UPSERT 逻辑并像使用 MERGE 一样插入两者。
标签: java android sqlite boolean