Под Android я делаю так. Вставляю изначально файл БД в Deploy.
Потом вызываю при необходимости процедуру
procedure TForm1.RefreshBD;
{ TODO -cKod : RefreshBD - обновление БД }
var
PackageName: JString;
zip: TZipFile;
begin
// Отключаемся от базы
FDConnection1.Connected := False;
// Получаем имя apk файла
PackageName := SharedActivityContext.getPackageResourcePath;
if TFile.Exists(JStringToString(PackageName)) then
begin
// Удаляем старый файл базы
TFile.Delete(TPath.GetHomePath + PathDelim + 'DBGK.db');
// Извлекаем новый файл базы
zip := TZipFile.Create;
zip.Open(JStringToString(PackageName), TZipMode.zmRead);
zip.Extract('assets/internal/DBGK.db', TPath.GetDocumentsPath, False);
zip.Close;
zip.free;
end;
// Подключаемся к базе
FDConnection1.Connected := True;
end;
Под iOS вставляю в ресурсы, потом вот так
procedure TForm1.RefreshBD;
{ TODO -cKod : RefreshBD - обновление БД }
begin
// Отключаемся от базы
FDConnection1.Connected := False;
if FindResource(0, 'res_bd', PChar(RT_RCDATA)) <> 0 then
rs_bd := TResourceStream.Create(0,'res_bd',PChar(RT_RCDATA));
if TFile.Exists(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db') then
begin
TFile.Delete(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');
rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');
end
else
begin
rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');
end;
FDConnection1.Connected := True;
end;