Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Telefondaki sqllite dosyasını pc ye veya başka yere yedek alma
#1
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)
Cevapla
#2
(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;
Cevapla
#3
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.
Cevapla
#4
(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.
Cevapla
#5
(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;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi FMX, geliştirdiğiniz uygulamanın log kaydını alma işlemi muratcelik64 3 290 22-03-2026, Saat: 05:00
Son Yorum: ovural
  Delphi FMX ile geliştirilen projenin yedeğini alma işlemi. muratcelik64 1 170 15-03-2026, Saat: 20:43
Son Yorum: mkysoft
  Android Kontakt, Telefon numaralarını alma.. ARM 1 624 09-03-2025, Saat: 07:00
Son Yorum: ARM
  Lokasyon Alma barissagir 2 931 14-08-2024, Saat: 14:59
Son Yorum: barissagir
  Android WiFi network ismini alma 41linea41 4 1.799 02-10-2023, Saat: 11:57
Son Yorum: 41linea41



Konuyu Okuyanlar: