FireDAC 下的 Sqlite [7] - 備份、優化、事務(Transaction)

用 TFDSQLiteBackup 控件, 兩三行代碼即可完成 Sqlite 數據庫的備份.
procedure TForm1.Button1Click(Sender: TObject);
begin
  {先初始化目標}
  FDConnection1.DriverName := 'SQLite';
  FDConnection1.Params.Add('Database=C:\Temp\FDDemo_Back.sdb'); //如果不指定這個路徑, 就是備份到內存
  FDConnection1.Open();

  {備份 C:\Temp\FDDemo.sdb}
  FDSQLiteBackup1.DriverLink := FDPhysSQLiteDriverLink1;
  FDSQLiteBackup1.Database := 'C:\Temp\FDDemo.sdb';        //支持 Url
  FDSQLiteBackup1.DestDatabaseObj := FDConnection1.CliObj;
  FDSQLiteBackup1.Backup;
end;


經過一些操作後, 數據庫可能會有碎片, 這時可通過 TFDSQLiteValidate 控件的 Sweep 方法執行優化.
{常見代碼}
begin
  FDSQLiteValidate1.DriverLink := FDPhysSQLiteDriverLink1;
  FDSQLiteValidate1.Database := 'C:\Temp\FDDemo.sdb';
  FDSQLiteValidate1.Sweep; //也可以通過連接參數 auto_vacuum = FULL; (0:NONE, 1:FULL, 2: INCREMENTAL) 指定自動清理 
end;


爲避免數據庫操作中的失誤, 可通過事務(Transaction) 來回滾; 它應該是被普遍使用的手段.
{常見代碼}
begin
  FDConnection1.StartTransaction; //開始一個事務
  try
    {可能會出錯的代碼}
    FDConnection1.Commit;   //提交
  except
    FDConnection1.Rollback; //回滾
  end;
end;
發佈了6 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章