Sqlite 数据库未从资产文件夹正确传递

问题描述 投票:0回答:1

我经常遇到这个问题,每次我运行 main.dart 并从我正在测试的手机上重新安装它时,带有数据表的数据库“chinook.db”就会传递到应用程序,但没有里面的内容。当我在 data/data/com.example.(appname) 中打开数据库时,它只显示“en_US”,仅显示“en_US”。我在任何地方都看不到任何解决这个问题的方法。我将附上 main.dart 和 pubspec.yaml。

main.dart

Future<void> _openDatabase() async {
    try {
      // Get the path to the databases directory
      final databasesPath = await getDatabasesPath();
      final path = join(databasesPath, 'chinook.db');

      // Check if the database exists
      final exists = await databaseExists(path);

      if (!exists) {
        // Copy the database from assets to the databases directory
        ByteData data = await rootBundle.load('assets/chinook.db');
        List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
        await File(path).writeAsBytes(bytes);
      }

      // Open the database
      _database = await openDatabase(path);
      setState(() {
        _isDatabaseConnected = true;
      });
      print('Connected to database');
    } catch (e) {
      print('Error opening database: $e');
    }
  }
pubspec.yaml
  assets:
  - assets/chinook.db

我希望数据库能够从资产文件夹正确传递到数据/数据应用程序文件夹。自从我一周前刚开始编写 flutter 代码以来,我正在尝试的就是手动替换 data/data 文件夹中的数据库,以便我可以测试我的应用程序。

android flutter sqlite
1个回答
0
投票

我明白了,我只是没有在我的登录模块上执行数据库资产的复制。

© www.soinside.com 2019 - 2024. All rights reserved.