【发布时间】:2013-05-23 23:32:08
【问题描述】:
执行以下代码时,数据库文件只有表名。似乎没有字段名称或实际数据被复制。
procedure TdbModule.BackupDB();
begin
ADConnection1.Connected := True;
ADSQLiteBackup1.DatabaseObj := ADConnection1.CliObj;
ADSQLiteBackup1.DestDatabase := 'd:\dan.sdb';
ADSQLiteBackup1.Backup;
end;
dan.sdb 文件正在创建中,它只是缺少任何备份数据。该应用程序显示数据并且工作正常。
想法?
【问题讨论】:
-
不相关,只是一个旁注,在 Delphi 中,您不必像其他语言一样在方法末尾包含括号
()。如果你没有参数,那么你可以删除它们。 -
仅关闭与 db 的连接,调用 CopyFile(...) 进行备份,重新打开与 db 的连接还不够吗?
-
@ComputerSaysNo 可以,但是SQLite3 backup API was designed to be better:“此过程在许多情况下运行良好,并且通常非常快。但是,此技术具有以下缺点:任何希望写入的数据库客户端创建备份时的数据库文件必须等到共享锁被放弃。它不能用于将数据复制到内存数据库或从内存数据库复制数据。如果在复制数据库文件时发生电源故障或操作系统故障,备份数据库可能系统恢复后损坏”
标签: delphi delphi-xe4 firedac