FireDAC SQLite备份不保存任何数据

时间:2013-05-23 23:32:08

标签: delphi delphi-xe4 firedac

执行以下代码时,数据库文件只有表名。似乎没有任何字段名称或实际数据被复制。

procedure TdbModule.BackupDB();
begin
  ADConnection1.Connected := True;
  ADSQLiteBackup1.DatabaseObj := ADConnection1.CliObj;
  ADSQLiteBackup1.DestDatabase := 'd:\dan.sdb';
  ADSQLiteBackup1.Backup;
end;

正在创建dan.sdb文件,它只缺少任何备份数据。该应用程序显示数据并正常工作。

想法?

1 个答案:

答案 0 :(得分:2)

您是否有一个SQLite内存数据库,其中有几个TADMemTable /其他数据集使用FireDAC LocalSQL连接到它?

如果是,则备份不会复制数据集的内容,因为它们表示为SQLite虚拟表。备份仅复制常规表的内容。

作为解决方法,你应该:

  • 为每个ADMemTable执行CREATE TABLE ... AS SELECT ...命令,将它们复制到常规表;
  • 将ADLocalSQL.Active设置为False;
  • 执行备份。