Delphi Can

Orjinalini görmek için tıklayınız: Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
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)
(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;
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.
(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.
(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;