【问题标题】:Flutter: DatabaseException error when I try to perform an insert operationFlutter:尝试执行插入操作时出现 DatabaseException 错误
【发布时间】:2020-03-30 23:24:35
【问题描述】:

我正在尝试将数据插入到我正在构建的应用程序的 sqlite 数据库中。我不断收到 DatabaseException 错误,这表明已创建的表上的列不存在,但我无法破译我做错了什么。

数据模型:

class User {
  int id;
  String token;

  User({
    this.id,
    this.token,
  });

  factory User.fromJson(Map<String, dynamic> data) => new User(
    id: data["id"],
    token: data["token"],
  );

  Map<String, dynamic> toJson() => {
    "id": id,
    "token": token,
  };
}

数据库文件:

class UserDb {
  UserDb._();
  static final UserDb db = UserDb._();

  Database _database;

  Future<Database> get database async {
    if (_database != null) {
      return _database;
    }

    _database = await initDB();
    return _database;
  }

  initDB() async {
    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "TestDB.db");

    return await openDatabase(path, version: 1, onOpen: (db) {},
        onCreate: (Database db, int version) async {
      await db.execute("CREATE TABLE User (id INTEGER PRIMARY KEY, token TEXT)");
    });
  }

  newClient(User user) async {
    final db = await database;
    var table = await db.rawQuery("SELECT MAX(id)+1 as id FROM User");
    int id = table.first["id"];

    var raw = await db.rawInsert(
        "INSERT INTO User (id, token)"
        " VALUES (?,?)",
        [id, user.token]);
    return raw;
  }
}

错误:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(table User has no column named token (code 1): , while compiling: INSERT INTO User (id, token) VALUES (?,?)) sql 'INSERT INTO User (id, token) VALUES (?,?)' args [50000001, 5e7aa383bdd9693090ce2116]}

【问题讨论】:

    标签: sqlite flutter dart


    【解决方案1】:

    initDB() 只会在您第一次运行此应用程序时被调用一次
    之后对initDB()的所有修改将不再执行
    最简单的解决方法是将TestDB.db 重命名为另一个名称,例如TestDB1.db

    要使用卸载应用程序并避免 Android 自动备份,您可以参考 SQLite DB file remains after uninstalling the app

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多