Flutter / SQFLite 添加行 rawInsert

Flutter / SQFLite adding rows rawInsert

我正在使用从资产中复制的现有 SQLite 数据库。现在一切都很好,但是当试图在 table 中插入一些数据时出现错误:

DatabaseException(no such table: Parametre (code 1 SQLITE_ERROR[1])

这是我的:

Future<bool> insertUser (String user, String depot, String pwd) async {
    int result = 0;
    Database database = await openDatabase(dbPath);
    final db = await database;
    try {
      result = await db.rawInsert(
          'INSERT INTO Parametre (USER, DEPOT) VALUES ("$user", "$depot")');
    }catch(e){
      print(e);
    }
    if(result>0){
      return true;
    }else{
      return false;
    }
  }

我错过了什么?

从表面上看,要么是您拼错了 table 名称 Parametre,要么是您的数据库中没有具有该名称的 table。您应该 运行 一个 CREATE TABLE 语句来在之前的某处创建 table (或者,如果您的代码中有它,它还没有 运行 或包含其他一些错误) .

了解 sqflite 为其 openDatabase 方法提供了两个很好的论据可能会对您有所帮助:onCreateonUpdate。它们允许您在创建数据库时调用自定义函数(一种在第一个 运行 时创建您的应用程序所需的所有 table 的简单方法)和另一个不同的函数来更新您的数据库,方法是添加 tables 或更改列,如果您只是为相同的 openDatabase 函数提供连贯的 version 参数。

好的,问题似乎出在 dbPath 中。 dbPath 设置为 'assets/myDatabase.db'。第一步是将数据库从资产复制到应用程序。 其次,在复制数据库后,我不必使用 openDatabase 的完整路径。正确的方法是只使用数据库名称,意思是 openDatabase('myDatabase.db').