首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在sqflite中创建其他表

无法在sqflite中创建其他表
EN

Stack Overflow用户
提问于 2022-06-10 12:56:50
回答 2查看 41关注 0票数 0

我试图在现有数据库上创建一个新的user表,但是sqflite继续显示“没有这样的表异常”的错误,它只执行一个表。我也尝试过更改数据库名,但是没有任何效果。这是我的DBconnector代码:

代码语言:javascript
复制
class DBConnector {
Future<Database> setDatabase() async {
var directory = await getApplicationDocumentsDirectory();
var path = join(directory.path, 'sddssd.db');
var database =
    await openDatabase(path, version:1, onCreate: _createDatabase);
return database;
}

Future<void> _createDatabase(Database database, int version) async {
String questionTableName = QuestionModel.KEY_QUESTION_TABLE_NAME;
String userTableName = UserModel.KEY_USER_TABLE_NAME;

String quesTableSql =
        "CREATE TABLE IF NOT EXISTS $questionTableName (id INTEGER PRIMARY KEY,question         VARCHAR(200),answer VARCHAR(200));";
String userTableSql =
       """CREATE TABLE IF NOT EXISTS $userTableName (uid INTEGER PRIMARY KEY,name   TEXT,email TEXT,password TEXT);""";
await database.execute(quesTableSql);
await database.execute(userTableSql);


}
}
Error :
Exception has occurred.
SqfliteDatabaseException (DatabaseException(no such table: User   (code 1 SQLITE_ERROR): , while compiling: INSERT INTO User (uid, name, email, password) VALUES (NULL, ?, ?, ?)) sql 'INSERT INTO User (uid, name, email, password) VALUES (NULL, ?, ?, ?)' args [f, e, s]})
EN

回答 2

Stack Overflow用户

发布于 2022-06-10 13:38:23

代码语言:javascript
复制
String quesTableSql = """CREATE TABLE IF NOT EXISTS $userTableName 
      (
      uid INTEGER PRIMARY KEY,
      name TEXT,
      email TEXT,
      password TEXT
      """);
票数 0
EN

Stack Overflow用户

发布于 2022-06-11 13:04:16

我解决了这个问题,问题是,在加载应用程序时,onCreate回调只执行一次,之后除非使用迁移,否则不会更新任何更改。因此,我为创建Table创建了一个单独的函数,并通过创建该类的实例并调用created方法使其工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72574661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档