如何在Flutter中使用SQFLite创建多个表?

时间:2020-04-18 08:22:41

标签: flutter dart

我正在使用sqflite作为数据库。当我尝试创建一个表时,它可以完美地工作。但是,当我添加一些额外的SQL代码来创建额外的表时,会出现此错误:

error DatabaseException(near ",": syntax error (code 1 SQLITE_ERROR): , while compiling: CREATE TABLE deletednotes(id INTEGER PRIMARY, title TEXT, description TEXT, priority INTEGER, date int)) sql 'CREATE TABLE deletednotes(id INTEGER PRIMARY, title TEXT, description TEXT, priority INTEGER, date int)' args []} during open, closing...

如何正确创建多个表?

这是我的查询:

  void _createDB(Database db, int version) async {
    await db.execute('''CREATE TABLE $notetable(
          $COL_ID INTEGER PRIMARY KEY AUTOINCREMENT, $COL_TITLE TEXT, $COL_DESCRIPTION TEXT, $COL_PRIORITY INTEGER, $COL_DATE int)''');

    await db.execute(
        '''CREATE TABLE $archievedtable($COL_ID INTEGER PRIMARY KEY, $COL_TITLE TEXT, $COL_DESCRIPTION TEXT, $COL_PRIORITY INTEGER, $COL_DATE int)''');

    await db.execute(
        '''CREATE TABLE $deletedtable($COL_ID INTEGER PRIMARY, $COL_TITLE TEXT, $COL_DESCRIPTION TEXT, $COL_PRIORITY INTEGER, $COL_DATE int)''');
  }

也许会有语法错误,有什么想法吗?

  • 常量变量:
  static const COL_TITLE = "title";
  static const COL_DESCRIPTION = "description";
  static const COL_PRIORITY = "priority";
  static const COL_DATE = "date";

  String notetable = "notes";
  String deletedtable = "deletednotes";
  String archievedtable = "archievednotes";```

1 个答案:

答案 0 :(得分:1)

在SQL代码中用int替换INTEGER并更改以下内容 在声明主键之后添加关键字KEY的行:

await db.execute( '''CREATE TABLE $deletedtable($COL_ID INTEGER PRIMARY, $COL_TITLE TEXT, $COL_DESCRIPTION TEXT, $COL_PRIORITY INTEGER, $COL_DATE int)''');

收件人:

await db.execute( '''CREATE TABLE $deletedtable($COL_ID INTEGER PRIMARY KEY, $COL_TITLE TEXT, $COL_DESCRIPTION TEXT, $COL_PRIORITY INTEGER, $COL_DATE int)''');