繁体   English   中英

Flutter Sqflite 更新

[英]Flutter Sqflite Update

我需要一些新手帮助。

我正在尝试更新数据库的一列,但我想不出哈哈...

我有一个 controller,我在其中放置了我的方法,还有一个 db 助手。

部分帮手:

    static Future<void> initDb() async {
    if (_db != null) {
      return;
    }
    try {
      String _path = await getDatabasesPath() + 'cities.db';
      _db = await openDatabase(
        _path,
        version: _version,
        onCreate: (db, version) {
          return db.execute(
            "CREATE TABLE $_tableName("
            "id INTEGER PRIMARY KEY AUTOINCREMENT, "
            "name STRING, code STRING, "
            "startDate STRING, startTime STRING, "
            "endDate STRING, endTime STRING, "
            "color INTEGER, isCompleted INTEGER)",
          );
        },
      );
    } catch (e) {
      print(e);
    }
  }

    static updateStatus(int id) async {
        return await _db!.rawUpdate('''
          UPDATE cities
          SET color = ?
          WHERE id = ?
        ''', [1, id]);
      }

在 controller 我有方法:

void markColor(int id) async {
    await DBHelper.updateStatus(id);
    getCities();
  }

在应用程序的某个地方,我想根据屏幕的 textEditingController 更新 String 代码,如 markColor 方法...我尝试了一千种不同的 forms ,但都没有用,有人可以帮忙吗?

Flutter 中的 SQFlite 更新通常通过update function 本身完成,如下所示:

final updateCount = await db.update(
  'PEOPLE',
  {
    'FIRST_NAME': person.firstName,
    'LAST_NAME': person.lastName,
  },
  where: 'ID = ?',
  whereArgs: [person.id],
);
  1. 此代码中的第一个参数PEOPLE是您要更新的表的名称。
  2. 第二个参数是 map 键和值,其中键是要更新的列的名称,在本例中为'FIRST_NAME''LAST_NAME' ,它们的值是要更新的值。
  3. 第三个参数where要更新哪些行,在本例中,仅更新ID列等于您在下一步中设置的值的行。
  4. 第四个参数whereArgs是您where参数中使用的 arguments 的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM