【问题标题】:How to insert data once in a mysql database, and then keep updating that? Java / Android如何在mysql数据库中插入一次数据,然后继续更新?爪哇/安卓
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我该怎么做呢?
  • 查看link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多