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

标签 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();
    }

有任何想法吗?

最佳答案

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

但是,如果您使用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查询表以获取所需的条目。

关于java - SQLite查询产生最后一个但一行值而不是最后插入的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61785049/

相关文章:

java - 安卓 : How to check if user clicks different key from edittext digits?

sqlite - 如何使用 RSqlite 将 CSV 导入到 sqlite 中?

qt - 删除 QTableView 中的多行

java - JComboxBox setSelectedItem

java - 找不到参数的方法 abiFilters() [x86]

java - 单例中的双重检查锁定

android - 将 Android 项目从 git 加载到 Eclipse

java - 为什么 Android JSInterface 这么慢?

带有 CheckBox setChecked(true) 的 Android Spinner 不工作

performance - 为什么 SQLite 3.7.2 在 Step 操作上比 3.7.9 快 3 倍