Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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
颤振选择返回空sqlite_Sqlite_Flutter - Fatal编程技术网

颤振选择返回空sqlite

颤振选择返回空sqlite,sqlite,flutter,Sqlite,Flutter,我是新来的SQLite和flatter。我正在尝试访问一个SQLite数据库(它位于我的计算机上的项目文件夹“~/Work/flattertest/projecttestflatter/poa.db”) 但是当我尝试将我的列表转换为字符串时,我有null 这是我的代码: class _DbPageState extends State<DbPage> { String data; var databasesPath; String path; Database dat

我是新来的
SQLite
flatter
。我正在尝试访问一个
SQLite
数据库(它位于我的计算机上的项目文件夹
“~/Work/flattertest/projecttestflatter/poa.db”

但是当我尝试将我的
列表
转换为
字符串
时,我有
null

这是我的代码:

class _DbPageState extends State<DbPage> {
  String data;
  var databasesPath;
  String path;
  Database database;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        body: Container(
      child: Row(
        children: <Widget>[
          new IconButton(
              onPressed: () {
                data = getRecords().toString();
              },
              icon: Icon(Icons.more_vert)),
          new Text(
            data,
          )
        ],
      ),
    ));
  }

  Future<void> openDb() async {
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, '~/Work/FlutterTest/ProjectTestFlutter/poa.db');

    database = await openDatabase(path, version: 1);
  }

  Future<List<Map>> getRecords() async {
    List<Map> list = await database.rawQuery('SELECT * FROM tbl1');
    return list;
  }

  Future<void> closeDb() async {
    await database.close();
  }
}
class\u DbPageState扩展状态{
字符串数据;
var数据库;
字符串路径;
数据库;
@凌驾
void initState(){
super.initState();
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
主体:容器(
孩子:排(
儿童:[
新图标按钮(
已按下:(){
数据=getRecords().toString();
},
图标:图标(Icons.more_vert)),
新文本(
数据,
)
],
),
));
}
未来的openDb()异步{
var databasesPath=等待getDatabasesPath();
stringpath=join(databasesPath,“~/Work/flattertest/projecttestflatter/poa.db”);
数据库=等待openDatabase(路径,版本:1);
}
Future getRecords()异步{
List List=WAIT database.rawQuery('SELECT*FROM tbl1');
退货清单;
}
Future closeDb()异步{
等待数据库。关闭();
}
}

例如,当应用程序启动时,将数据库复制到您的设备上

ByteData data = await rootBundle.load("assets/poa.db");
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);

var databasesPath = await getDatabasesPath();
String dbPath = join(databasesPath, "poa.db");
await File(dbPath).writeAsBytes(bytes);

数据库是否已正确打开?因为要在Flatter中打开预初始化的db,您首先需要将其从assets文件夹复制到设备。您获取的路径是计算机路径,该路径不应工作。因此,您正在尝试从从设备上运行的应用访问计算机上的db文件?getDatabasesPath将在您的设备中为您提供一个路径。您应该使您的db文件路径类似于databasesPath+“/poa.db”。但同样,您应该首先将它从Flatter资产包复制到该路径。@Martyns哦,不,所以它没有正确打开。您能提供一个答案吗?@Ryosuke看起来确实是个问题。@Itoun太好了!
var databasesPath = await getDatabasesPath();
String dbPath = join(databasesPath, "poa.db");
var database = await openDatabase(dbPath, version: 1);