【发布时间】:2020-03-30 23:24:35
【问题描述】:
我正在尝试将数据插入到我正在构建的应用程序的 sqlite 数据库中。我不断收到 DatabaseException 错误,这表明已创建的表上的列不存在,但我无法破译我做错了什么。
数据模型:
class User {
int id;
String token;
User({
this.id,
this.token,
});
factory User.fromJson(Map<String, dynamic> data) => new User(
id: data["id"],
token: data["token"],
);
Map<String, dynamic> toJson() => {
"id": id,
"token": token,
};
}
数据库文件:
class UserDb {
UserDb._();
static final UserDb db = UserDb._();
Database _database;
Future<Database> get database async {
if (_database != null) {
return _database;
}
_database = await initDB();
return _database;
}
initDB() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "TestDB.db");
return await openDatabase(path, version: 1, onOpen: (db) {},
onCreate: (Database db, int version) async {
await db.execute("CREATE TABLE User (id INTEGER PRIMARY KEY, token TEXT)");
});
}
newClient(User user) async {
final db = await database;
var table = await db.rawQuery("SELECT MAX(id)+1 as id FROM User");
int id = table.first["id"];
var raw = await db.rawInsert(
"INSERT INTO User (id, token)"
" VALUES (?,?)",
[id, user.token]);
return raw;
}
}
错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(table User has no column named token (code 1): , while compiling: INSERT INTO User (id, token) VALUES (?,?)) sql 'INSERT INTO User (id, token) VALUES (?,?)' args [50000001, 5e7aa383bdd9693090ce2116]}
【问题讨论】: