![]() |
|
Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma (/showthread.php?tid=6445) |
Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma - ssmr - 30-11-2021 Merhaba. 10.4 ile telefona sqllite veritabanlı bir uygulama yazacağım. Uygulama ile beraber sqllite dosyayı telefona yüklemede bir sorun olmamakla beraber, geliştirme aşamasında veritabanını mobilden geri yükleyip database de yeni tablo veya alanlar eklemek gerektiğinde telefondan datayı bilgisayara nasıl alabileceğimi çözemedim. Ya da telefondaki datanın yedeğini pc ye nasıl alabilirim? (Yeni tablo ekleme ve tablolara yeni alanlar ekleyip verileri kaybetmeden yeniden telefona yüklemek için yedeği lazım) Cvp: Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma - yasard - 01-12-2021 (30-11-2021, Saat: 21:44)ssmr Adlı Kullanıcıdan Alıntı: Merhaba. 10.4 ile telefona sqllite veritabanlı bir uygulama yazacağım. Uygulama ile beraber sqllite dosyayı telefona yüklemede bir sorun olmamakla beraber, geliştirme aşamasında veritabanını mobilden geri yükleyip database de yeni tablo veya alanlar eklemek gerektiğinde telefondan datayı bilgisayara nasıl alabileceğimi çözemedim. Ya da telefondaki datanın yedeğini pc ye nasıl alabilirim? (Yeni tablo ekleme ve tablolara yeni alanlar ekleyip verileri kaybetmeden yeniden telefona yüklemek için yedeği lazım) Merhaba; Bu işlemler için db dosyasını pc ye alman gerekmez. connection nesnesinin after connect olayında IF NOT EXISTS kullananarak table create komutlarını yazman yeterli. procedure Tdm.localConAfterConnect(Sender: TObject);
begin
localCon.ExecSQL('CREATE TABLE IF NOT EXISTS ORDERHEADER (ID INTEGER NOT NULL)');
end;
Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma - ssmr - 01-12-2021 Cevabınız için teşekkür ederim. Ancak program kullanılmaya başlandıktan sonra veritabanındaki mevcut verilerde yapılabilecek toplu değşiklikler, yeni tablo veya tablolara alan ekleme gibi işlemler için veritabanını mevcut verilerle açıp gerekli düzeltmeler, düzenlemeler yapmam gerekecek ve bu pc de çok daha pratik. Cvp: Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma - yasard - 02-12-2021 (01-12-2021, Saat: 20:22)ssmr Adlı Kullanıcıdan Alıntı: Cevabınız için teşekkür ederim. Ancak program kullanılmaya başlandıktan sonra veritabanındaki mevcut verilerde yapılabilecek toplu değşiklikler, yeni tablo veya tablolara alan ekleme gibi işlemler için veritabanını mevcut verilerle açıp gerekli düzeltmeler, düzenlemeler yapmam gerekecek ve bu pc de çok daha pratik. Bu şekilde bir kullanım planlıyorsanız db dosyasını ortak klasörlerin birinde kullanmanız gerek. O zaman her yerden ve herkes tarafından erişilebilir olur. Ayrıca hiç güvenli bir seçenek olmaz. Kullanıcı tarafından dosyanın silinmesinden tutun aklınıza gelecek diğer müdahalelere açık bırakırsınız. Diğer söylediğiniz işlemleri afterconnect olayında sql olarak yazarak çalıştıra bilirsiniz. Önce insert ile temp tabloya aktarıp sonrasın da alter table add column, delete column gibi komutları çalıştırıp temp tablodan geri dönüş sağlarsınız. Yada alanların değer değiştirme için update komutlarını çalıştırabilirsiniz. Cvp: Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma - elixir84 - 02-12-2021 (01-12-2021, Saat: 20:22)ssmr Adlı Kullanıcıdan Alıntı: Cevabınız için teşekkür ederim. Ancak program kullanılmaya başlandıktan sonra veritabanındaki mevcut verilerde yapılabilecek toplu değşiklikler, yeni tablo veya tablolara alan ekleme gibi işlemler için veritabanını mevcut verilerle açıp gerekli düzeltmeler, düzenlemeler yapmam gerekecek ve bu pc de çok daha pratik. Yedekleme
dm.fdado.Connected := false;
with dm.FDSQLiteBackup1 do
begin
{$IFDEF ANDROID}
database := TPath.Combine(TPath.GetDocumentsPath, 'defter.db3');
{$ENDIF}
{$IFDEF IOS}
database := TPath.GetHomePath + PathDelim + 'Documents' + PathDelim + 'defter.db3';
{$ENDIF}
DestDatabase := TPath.Combine(TPath.GetSharedDocumentsPath, formana.StringPad(inttostr(formana.GlobalYedekSira),'0',4,false)+'-'+formatdatetime('dd-mm-yy hhnnss', now) + '.db3');
globalyedekdosya:=formana.StringPad(inttostr(formana.GlobalYedekSira),'0',4,false)+'-'+formatdatetime('dd-mm-yy hhnnss', now) + '.db3';
backup;
ShowHintFrame(formAna, 'Yedeklendi');
end;
end;
{$ENDIF}
Yedek Aç dm.fdado.Connected := false;
with dm.FDSQLiteBackup1 do
begin
{$IFDEF ANDROID}
DestDatabase := TPath.Combine(TPath.GetDocumentsPath, 'defter.db3');
{$ENDIF}
{$IFDEF IOS}
DestDatabase := TPath.GetHomePath + PathDelim + 'Documents' + PathDelim + 'defter.db3';
{$ENDIF}
Database := //Dosya Yolu
backup;
ShowHintFrame(formAna, 'Yedek Geri Açıldı');
end;
|