[英]How to Update a row in Flutter with SQFlite
我嘗試更新一行,但沒有任何反應,我不知道我錯過了什么。 有人可以檢查我做錯了什么嗎?
這是我的助手 class。
class DBHelper {
static Future<sql.Database> database() async {
final dbPath = await sql.getDatabasesPath();
//einmal die Datenbank erstellen in einer Variablen
return sql.openDatabase(path.join(dbPath, 'wanderwege.db'),
onCreate: (db, version) {
return db.execute(
'CREATE TABLE user_places(id TEXT PRIMARY KEY, title TEXT, image TEXT, createTime TEXT, place TEXT, description TEXT)');
// 'CREATE TABLE user_places(id TEXT PRIMARY KEY, title TEXT, image TEXT, loc_lat REAL, loc_lng REAL, address TEXT)');
}, version: 1);
}
static Future<void> insert(String table, Map<String, Object> data) async {
final db = await DBHelper.database();
db.insert(table, data, conflictAlgorithm: sql.ConflictAlgorithm.replace);
}
//Delete data from table
static Future<void> delete(String id) async {
final db = await DBHelper.database();
var res = await db.delete('user_places', where: "id = ?", whereArgs: [id]);
return res;
}
//Update Data
static Future<void> updateData(String title) async {
final db = await DBHelper.database();
int res =
await db.rawUpdate('UPDATE user_places SET title = ? WHERE id = ?');
return res;
}
}
在我的 Edit_Screen 上我使用了這個,首先我只是想嘗試使用 _titleController.text 中的新值更新標題
//Update für die jeweiligen einträge zu Kontrollieren
checkupdate() {
if (_titleController.text.isEmpty) {
var errorMessage = 'Bitte gib einen Titel ein';
return _showErrorDialog(errorMessage);
}
DBHelper.updateData(_titleController.text);
print(DBHelper.updateData(_titleController.text));
Navigator.of(context).pop();
}
但是什么也沒發生,我現在不知道我到底在哪里犯了錯誤。
謝謝您的幫助:)
我假設您在 rawUpdate 查詢中錯過了更新 arguments。
//Update Data
static Future<void> updateData(String title, String id) async {
final db = await DBHelper.database();
int res =
await db.rawUpdate('UPDATE user_places SET title = ? WHERE id = ?', [title, id]);
return res;
}
在此處參考 rawUpdate 示例: https://pub.dev/packages/sqflite
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.