Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用flatter SQFlite访问SQLite时没有这样的表错误_Sqlite_Flutter_Dart_Sqflite - Fatal编程技术网

使用flatter SQFlite访问SQLite时没有这样的表错误

使用flatter SQFlite访问SQLite时没有这样的表错误,sqlite,flutter,dart,sqflite,Sqlite,Flutter,Dart,Sqflite,我正在用SQLite创建我的第一个颤振项目。这是一个购物清单应用程序。这是进行数据库调用的实用程序类: import'package:path/path.dart'; 导入“包:sqflite/sqflite.dart”; 类DbHelper{ 最终int版本=1; 数据库数据库; 未来的testDb()异步{ db=等待openDb(); wait db.execute('插入或忽略列表值(0,“水果”,2)'); 等待db.execute( '在项目值中插入或忽略(0,0,“苹果”,“2公斤

我正在用SQLite创建我的第一个颤振项目。这是一个购物清单应用程序。这是进行数据库调用的实用程序类:

import'package:path/path.dart';
导入“包:sqflite/sqflite.dart”;
类DbHelper{
最终int版本=1;
数据库数据库;
未来的testDb()异步{
db=等待openDb();
wait db.execute('插入或忽略列表值(0,“水果”,2)');
等待db.execute(
'在项目值中插入或忽略(0,0,“苹果”,“2公斤”,“绿色更佳”);
List lists=WAIT db.rawQuery('select*from lists');
List items=wait db.rawQuery('select*from items');
打印(列出[0].toString());
打印(项目[0].toString());
}
未来的openDb()异步{
if(db==null){
db=await openDatabase(join(await getDatabasesPath(),'shopping.db'),
onCreate:(数据库,版本){
database.execute(
'创建表列表(id整数主键、名称文本、优先级整数)';
database.execute(
'创建表项(id整数主键、idList整数、名称文本、数量文本、注释文本,'+
'外键(idList)引用列表(id))';
},版本:2007年版);
}
返回分贝;
}
}
这是我的主要颤振小部件:

类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
DbHelper DbHelper=DbHelper();
dbHelper.testDb();
返回材料PP(
标题:appTitle,
主题:主题数据(
原色样本:颜色。靛蓝
),
家:脚手架(
appBar:appBar(
标题:文本(appTitle),
标题:错误,
),
)
);
}
}
运行应用程序后,我会收到以下消息:

[VERBOSE-2:ui_dart_state.cc(186)] Unhandled Exception: DatabaseException(Error Domain=FMDatabase Code=1 "no such table: items" UserInfo={NSLocalizedDescription=no such table: items}) sql 'INSERT or IGNORE INTO items VALUES (0, 0, "Apples", "2 Kg", "Better if they are green")' args []}
#0      wrapDatabaseException (package:sqflite/src/exception_impl.dart:11:7)
<asynchronous suspension>

我以前读过很多类似的StackOverflow问题,但到目前为止还没有找到答案。

来自

Database Database=wait openDatabase(路径,版本:1,
onCreate:(数据库数据库,int版本)异步{
//创建数据库时,创建表
等待db.execute(
'创建表测试(id整数主键、名称文本、值整数、num实数)';
});

db.execute是异步的,因此您需要等待它,而onCreate也应定义为可等待。

您是否尝试过等待
数据库。在
onCreate
方法中执行
操作?这些是异步的,也许这就是问题所在?