SQLite查询产生最后一个但一行值而不是最后插入的行值

时间:2020-05-13 21:19:24

标签: java android sqlite flutter dart

我有一个奇怪的sqlite问题,部分是Flutter,部分是Android ...我有一个在Flutter中创建的数据库。当我插入新行并将其保存时,我想在Android中检索该行并将其值发送到广播接收器。我正在使用以下查询:"SELECT * FROM " + TABLE_NAME + " ORDER BY " + COLUMN_ID + " DESC LIMIT 1";在创建第一行时效果很好,但是此后,我的广播接收器只接收到最后一行的值,而不是最后一行。

这是我在Java方面的代码,用于从sqlite数据库获取详细信息并将其发送给接收方:

    public void getScheduleFromFlutter() {
        String setting = "";
        DatabaseHandler db = new DatabaseHandler(this);
        Cursor cursor = db.getValues();
        if (cursor.moveToFirst())
            setting = cursor.getString(cursor.getColumnIndex(COLUMN_SETTING));
        Intent intent = new Intent(this, Schedules.class);
        intent.putExtra("SETTING", setting);
        sendBroadcast(intent);
        cursor.close();
        db.close();
    }

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可能在查询中遇到一些问题,无法检索最后一行。

但是,如果您使用Sqflite在表中重新插入值。

插入值时:

  // Insert the Dog into the correct table. You might also specify the
  // `conflictAlgorithm` to use in case the same dog is inserted twice.
  //
  // In this case, replace any previous data.
  await db.insert(
    'dogs',
    dog.toMap(),
    conflictAlgorithm: ConflictAlgorithm.replace,
  );

insert方法返回带有new列ID的Future。

  // INSERT helper
  Future<int> insert(String table, Map<String, dynamic> values,
      {String nullColumnHack, ConflictAlgorithm conflictAlgorithm});

您可以改为发送此ID或使用此ID查询表以获取所需的条目。