1

我用 sqflite 创建了一个数据表。但它向我显示了一个语法错误。你能告诉我这里的语法错误在哪里吗?

Future _onCreate(Database db, int version) async {
    await db.execute('''
          CREATE TABLE $table (
            $columnId INTEGER PRIMARY KEY,
            $columnfid VARCHAR,
            $columnfname TEXT,
          )
          ''');
  }

这是错误:

Exception has occurred.
SqfliteDatabaseException (DatabaseException(near ")": syntax error (code 1 SQLITE_ERROR): , while compiling: CREATE TABLE fid_table (
            id INTEGER PRIMARY KEY,
            fid VARCHAR,
            fname TEXT,
          )) sql '          CREATE TABLE fid_table (
            id INTEGER PRIMARY KEY,
            fid VARCHAR,
            fname TEXT,
          )
          ' args []})
4

1 回答 1

4

问题在于 SQL 的尾随逗号 (,),即在最后一个TEXT之后。

代替

await db.execute('''
      CREATE TABLE $table (
        $columnId INTEGER PRIMARY KEY,
        $columnfid VARCHAR,
        $columnfname TEXT,
      )
      ''');

尝试

wait db.execute('''
      CREATE TABLE $table (
        $columnId INTEGER PRIMARY KEY,
        $columnfid VARCHAR,
        $columnfname TEXT
      )
      ''');

此外,额外的引号也不是必需的。所以,你也可以写这个。

wait db.execute('
      CREATE TABLE $table (
        $columnId INTEGER PRIMARY KEY,
        $columnfid VARCHAR,
        $columnfname TEXT
      )
      ');
于 2020-06-26T12:15:16.697 回答