首页 > 解决方案 > 在 SQFLite 中创建数据库时显示语法错误?

问题描述

创建表时出现语法错误,代码如下:

class DatabaseHelper {
DatabaseHelper._();
static final DatabaseHelper instance = DatabaseHelper._();
String teacherTable = 'teacherTable';
String colId = 'id';
String colSchoolId = 'schoolId';
String colTeacherId = 'teacherId';
String colObserverId = 'observerId';
String colSubjectId = 'subjectId';
String colSubjectName = 'subjectName';
String colClassId = 'classId';
String colBatchId = 'batchId';
String colAcademicYear = 'academicYear';
String colTempName = 'tempname';
Future<Database> initializeDatabase() async {
Directory dir = await getApplicationDocumentsDirectory();
String path = dir.path + 'students_record.db';
final LearningRecordDb =
await openDatabase(path, version: 1, onCreate: _createDb);
return LearningRecordDb;
}
void _createDb(Database db, int version) async {
await db.execute('CREATE TABLE $teacherTable(''$colId INTEGER PRIMARY KEY,'
    '$colSchoolId TEXT,'
    '$colTeacherId TEXT,'
    '$colObserverId TEXT,'
    '$colSubjectId TEXT,'
    '$colSubjectName TEXT,'
    '$colClassId TEXT,'
    '$colBatchId TEXT,'
    '$colAcademicYear TEXT,'
    '$colTempName TEXT,'');');
     }
     Future<List<Map<String, dynamic>>> getRecordMapList() async {
Database? db = await initializeDatabase();
final List<Map<String, dynamic>> result = await db.query(teacherTable);
return result;
  }
    Future<List<LearningModel>> getRecordList() async {
final List<Map<String, dynamic>> recordMapList = await getRecordMapList();
final List<LearningModel> recordList = [];
recordMapList.forEach((recordMap) {
  recordList.add(LearningModel.fromJson(recordMap));
});
return recordList;
 }
 Future<void> insertRecord(LearningModel learningModel) async {
Database? db = await initializeDatabase();
await db.insert(teacherTable, learningModel.toJson());
}

我得到的错误是:

I/flutter(6779):“LearningModel”实例 E/SQLiteLog(6779):(1)在“)”附近:“创建表teacherTable(E/SQLiteLog(6779)中的语法错误:id INTEGER PRIMARY KEY,E/SQLiteLog (6779):schoolId TEXT,E/SQLiteLog(6779):teacherId TEXT,E/SQLiteLog(6779):observerId TEXT,E/SQLiteLog(6779):subjectId TEXT,E/SQLiteLog(6779):subjectName TEXT,E/SQLiteLog (6779):
I/flutter (6779): subjectName TEXT, I/flutter (6779): classId TEXT, I/flutter (6779): batchId TEXT, I/flutter (6779): AcademicYear TEXT, I/flutter (6779): tempname TEXT, );' args [] 在打开、关闭期间... E/flutter (6779): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] 未处理异常:DatabaseException(near ")": 语法错误(代码 1 SQLITE_ERROR[ 1]):,编译时:创建表teacherTable(E/flutter(6779):id INTEGER PRIMARY KEY,E/flutter(6779):schoolId TEXT,E/flutter(6779):teacherId TEXT,E/flutter(6779) :observerId TEXT,E/flutter(6779):subjectId TEXT,E/flutter(6779):subjectName TEXT,E/flutter(6779):classId TEXT,E/flutter(6779):batchId TEXT,E/flutter(6779) : 学年 TEXT, E/flutter (6779): tempname TEXT,);) sql 'CREATE TABLE teacherTable(E/flutter (6779): id INTEGER PRIMARY KEY, E/flutter (6779): schoolId TEXT, E/flutter (6779): teacherId TEXT ,E/flutter(6779):observerId TEXT,E/flutter(6779):subjectId TEXT,E/flutter(6779):subjectName TEXT,E/flutter(6779):classId TEXT,E/flutter(6779):batchId TEXT , E/flutter (6779): AcademicYear TEXT, E/flutter (6779): tempname TEXT,);' args [] E/flutter (6779): #0 wrapDatabaseException (package:sqflite/src/exception_impl.dart:11:7) E/flutter (6779): E/flutter (6779): #1 SqfliteDatabaseMixin.txnSynchronized (package: sqflite_common/src/database_mixin.dart:319:14) E/flutter (6779): E/flutter (6779): #2 DatabaseHelper._createDb (包: course_observation/learning_db_model/dbhelper.dart:33:5) E/flutter (6779): E/flutter (6779): #3 SqfliteDatabaseMixin.doOpen。(package:sqflite_common/src/database_mixin.dart:720:17) E/flutter (6779): E/flutter (6779): #4 SqfliteDatabaseMixin._runTransaction (package:sqflite_common/src/database_mixin.dart:488:16) E /flutter (6779): E/flutter (6779): #5 SqfliteDatabaseMixin.txnSynchronized (package:sqflite_common/src/database_mixin.dart:319:14) E/flutter (6779): E/flutter (6779): #6 SqfliteDatabaseMixin .doOpen (package:sqflite_common/src/database_mixin.dart:710:11) E/flutter (6779): E/flutter (6779): #7 SqfliteDatabaseOpenHelper.openDatabase (package:sqflite_common/src/database.dart:44:7 ) E/flutter (6779): E/flutter (6779): #8 SqfliteDatabaseFactoryMixin.openDatabase。(包裹:sqflite_common/src/factory_mixin.dart:111:18) E/flutter (6779): E/flutter (6779): #9 ReentrantLock.synchronized。(package:synchronized/src/reentrant_lock.dart:37:18) E/flutter (6779): E/flutter (6779): #10 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33:16) E /flutter (6779): E/flutter (6779): #11 DatabaseHelper.initializeDatabase (package:lesson_observation/learning_db_model/dbhelper.dart:28:5) E/flutter (6779): E/flutter (6779): #12 DatabaseHelper .insertRecord (package:lesson_observation/learning_db_model/dbhelper.dart:62:20) E/flutter (6779): E/flutter (6779):

标签: fluttersqlitedartsqflite

解决方案


推荐阅读