如何在我的飞镖代码sqlite中解决此问题

时间:2019-08-06 14:07:42

标签: sqlite intellij-idea flutter dart

我的代码有问题,导致在database_helper.dart中午餐时出错

database_helper.dart是Sqlite中存储数据学习项目的一个文件,我遇到了这个问题,     我尝试了许多解决方案,例如卸载应用程序,然后重新安装

有人可以帮助我吗?

======

  class DataBaseHelper {
    static Database _db ;
    final String userT = 'userT' ;
    final String columnId = 'id' ;
    final String columnUserName = 'username' ;
    final String columnPassword = 'password' ;
    final String columnAge = 'age' ;
    final String columnCity = 'city' ;
=========

  Future<Database> get dbase async {
    if(_db != null) {
      return _db ;
    }
    _db = await intDB();
    return _db ;

  }
=================

  intDB() async {
    Directory docDirectory = await getApplicationDocumentsDirectory() ;
    String path = join(docDirectory.path , 'myDB.db') ;
    var myOwnDB = await openDatabase(path , version: 1 , onCreate: _onCreate);
    return myOwnDB ;
  }
=========================

  void _onCreate(Database db , int newVersion) async {
    var sql = 'CREATE TABLE $userT ($columnId INTEGER PRIMARY KEY UNIQUE ,'
        ' $columnUserName TEXT , $columnPassword TEXT , $columnCity TEXT , $columnAge INTEGER ' ;
    await db.execute(sql) ;
  }

错误日志:

  

E / SQLiteLog(14607):“ INTEGER”附近的(1):语法错误

     

I / flutter(14607):错误DatabaseException(在“ INTEGER”附近:语法错误(代码1):,而在编译时:CREATE TABLE userT(id INTEGER主键唯一性,用户名TEXT,密码TEXT,city TEXT,age INTEGER )在此期间输入代码,然后关闭...

     

E / flutter(14607):[错误:flutter / lib / ui / ui_dart_state.cc(148)]未处理的异常:DatabaseException(“ INTEGER”附近:语法错误(代码1):,正在编译:CREATE TABLE userT (id INTEGER PRIMARY KEY UNIQUE,用户名TEXT,密码TEXT,城市TEXT,年龄INTEGER)

2 个答案:

答案 0 :(得分:1)

语法错误。您忘了在行尾添加)

$columnAge INTEGER )

您可以在https://sqliteonline.com/

中检查sqllite代码
CREATE TABLE userT (columnId INTEGER PRIMARY KEY UNIQUE ,
        columnUserName TEXT , columnPassword TEXT , columnCity TEXT , columnAge INTEGER)

之后)。效果很好。

enter image description here

编辑:您在评论中提到的插入到语句中的第二个问题

Insert Into语句的语法错误是不存在“ userCity”列。
在您提供的问题中,在创建表时,使用名称columnCity ='city'。因此您应该将名称更改为“ city”。

答案 1 :(得分:0)

尝试删除UNIQUE

他们没有在任何示例中包含该单词,因此可能尚未实现。