我有一个奇怪的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();
}
有什么想法吗?
答案 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查询表以获取所需的条目。