flutter - 在 Flutter 中导入和替换 Sqlite 数据库时出错
问题描述
我在设备上的文档中有一个.db文件。它存储了一个特定的 Sqlite 数据库。我将如何导入该数据库文件并替换 Flutter 中的旧文件?它在 Documents 中始终具有相同的名称和相同的目的地。这是初始化原始数据库的 DbHelper.dart 中的代码,我正在寻找的是用文档中另一个数据库的 db 文件替换该代码。
DatabaseProvider._();
static final DatabaseProvider db = DatabaseProvider._();
Database _database;
Future<Database> get database async {
print("database getter called");
if (_database != null) {
return _database;
}
_database = await createDatabase();
return _database;
}
Future<Database> createDatabase() async {
String dbPath = await getDatabasesPath();
return await openDatabase(
join(dbPath, 'oldDB.db'),
version: 1,
onCreate: (Database database, int version) async {
print("Creating table");
await database.execute(
"CREATE TABLE $TABLE_PERSON ("
"$COLUMN_ID INTEGER PRIMARY KEY,"
")",
);}
在另一个页面上,我有一个按钮,例如IMPORT,我需要一个从 Documents 导入新数据库文件并替换旧数据库文件并持久保存的功能。我将如何以最简单的方式去做呢?
这是我认为可以工作的功能,但我收到了异步错误和更多奇怪的错误:
class DbHelper {
Future initDb() async {
final dbPath = await ExtStorage.getExternalStoragePublicDirectory(
ExtStorage.DIRECTORY_DOCUMENTS);
final path = join(dbPath, 'backup.db');
final exist = await databaseExists(path);
if (exist) {
print('db imported');
await openDatabase(path);
}
await openDatabase(path);
}
}
解决方案
推荐阅读
- r - 合并标准 Eurobarometer 的多个数据集
- c# - 如何将数组中的元素与在c#中按顺序输入到文本框中的元素进行比较?
- angular - 添加评论时,基本组件的角度依赖注入失败
- python - 如何通过存储在不同 .json 文件中的键来分隔 .json 文件?
- javascript - 函数读取给定节点的所有属性的问题
- html - Angular 11 在 HTML 中填充输入
- mysql - 可在 docker-compose.yml 中为 mysql 和 wordpress 设置的端口
- powershell - 如何显示对此脚本所做的更改?
- encryption - SubtleCrypto 导入密钥对未处理错误错误:整数太大
- javascript - 将类导入一个主文件显示错误