0

我想做以下事情:我想检查我的数据库表是否已经存在。如果没有,它应该成功(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;
    }


}
4

1 回答 1

1

checkDB()如果数据库存在,则返回 true 。因此,您的if语句将始终创建该条目。您还需要检查该表是否存在。使用SQLiteDatabase.query()来确定您的表是否存在。

于 2012-05-15T18:31:19.823 回答