使用 Sqflite 时进行 Flutter 数据库备份

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

我正在开发一个 flutter 项目。我想提取并添加数据库进行备份,但我已经好几天没能做到了。我正在考虑我该如何做到这一点。我想知道我是否能做到这一点。这可能吗?如果不是,我应该这样做吗?如果使用 SQLite 时无法做到这一点,我应该使用什么?

我尝试了一切,但还是做不到。如果有人有示例项目,请与我分享。

flutter sqlite backup database-backups sqflite
1个回答
0
投票

我的理解是你只需备份文件即可。 在打开数据库“之前”执行此操作的唯一技巧 - 因为这会锁定文件。

这是我的备份脚本 - 请注意,这在网络上不起作用。

import 'dart:io';

import 'package:date_time_format/date_time_format.dart';

Future<void> backupDatabase(String pathToDatabase,
    {required int version}) async {
  final datePart =
      DateTimeFormat.format(DateTime.now(), format: 'Y.j.d.H.i.s');

  /// db file path with .bak and date/time/added
  final backupPath =
      '$pathToDatabase.$version.$datePart.bak';

  final dbFile = File(pathToDatabase);
  final backupFile = File(backupPath);


  if (dbFile.existsSync()) {
    await backupFile.writeAsBytes(await dbFile.readAsBytes());
    print('''
Database backup completed successfully: 
  Original Size: ${dbFile.lengthSync()}
  Backuped Size: ${backupFile.lengthSync()}
        ''');
  } else {
    print('Database file not found.');
  }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.