Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird Database Oluşturma
#1
Merhaba Arkadaşlar,

Basit anlamda "Otopark Abone Cari takibi" için bir uygulama yazdım. Veritabanı olarak  "Firebird 2.5.8" kullandım. "SQL manager 2005 for interbase and Firebird" ile veritabanını oluşturdum. İDE olarak Delphi 10.3 Community Edition ile yazdım ve veritabanına FireDAC kullanarak bağlandım.

Programın kullanacak kişiye programı verdiğimde, program ilk açılışta veritabanı dosyası yoksa kendisinin oluşturmasını istiyorum. Mevcut veritabanını boş iken SQL haline alıp tekrar oluşturmam mümkün mü ? Veritabanı konusunda tecrübem yok. Eskiden IBExtract vardı diye hatırlıyorum. FireDAC tarafını ilk defa kullanıyorum. Çözüm önerilerinizi bekliyorum.
Cevapla
#2
Selam,
Kod ile yapmak yerine, bir veritabanını metadata olarak backup alıp, gerektiğinde restore yapabilirsiniz.
WWW
Cevapla
#3
(15-04-2019, Saat: 10:13)esistem Adlı Kullanıcıdan Alıntı: Selam,
Kod ile yapmak yerine, bir veritabanını metadata olarak backup alıp, gerektiğinde restore yapabilirsiniz.

Ornek var mi hocam ?
Cevapla
#4
(15-04-2019, Saat: 11:03)SercanTEK Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 10:13)esistem Adlı Kullanıcıdan Alıntı: Selam,
Kod ile yapmak yerine, bir veritabanını metadata olarak backup alıp, gerektiğinde restore yapabilirsiniz.

Ornek var mi hocam ?

/////////////////// BACKUP
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -b '+SERVIP+':'+VYOLU+ANA.QYILDBADI.AsString+'.FDB '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk -user sysdba -pass masterkey',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(INTTOSTR(ANA.QYILCALISMAYILI.AsInteger)+' Çalışma yılının kopyası alındı...');
 end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////// RESTORE
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -r o -v -user sysdba -pass masterkey '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk '+SERVIP+':'+VYOLU+'ETICARI_DB_'+FLOATTOSTR(YYIL.Value)+'.FDB',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(FLOATTOSTR(YYIL.Value)+' Çalışma yılı oluşturuldu...');
 end;

GBAK ile yukarıdaki şekilde backup alıp restore yapıyorum. Sizde önce metadata yı backup alıp exe ye gömüp, eğer veritabanı yok ise ordan restore yapabilirsiniz sanırım. Bu arada AknConfig bir arkadaşımın yazdığı içinde birçok function barındıran yardımcı bir component, onu kaale almayın, siz shellexecute ile yapabilirsiniz. 

Ben ETICARI_DB_<CalismaYili>.FDB şeklinde her yıl için ayrı veritabanları oluşturuyorum.
WWW
Cevapla
#5
Teşekkürler. Değerlendireceğim.
Cevapla
#6
(15-04-2019, Saat: 11:31)esistem Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 11:03)SercanTEK Adlı Kullanıcıdan Alıntı: Ornek var mi hocam ?

/////////////////// BACKUP
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -b '+SERVIP+':'+VYOLU+ANA.QYILDBADI.AsString+'.FDB '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk -user sysdba -pass masterkey',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(INTTOSTR(ANA.QYILCALISMAYILI.AsInteger)+' Çalışma yılının kopyası alındı...');
 end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////// RESTORE
 cmd := ANA.AknConfig.EXEKLASOR+'data\gbak.exe';
 Stream := TMemoryStream.Create;
 try
 Application.ProcessMessages;
   ANA.AknConfig.ReadOutputFromExternalProcess('',
     cmd +
     ' -r o -v -user sysdba -pass masterkey '+ANA.AknConfig.EXEKLASOR+'data\yyil.fbk '+SERVIP+':'+VYOLU+'ETICARI_DB_'+FLOATTOSTR(YYIL.Value)+'.FDB',
     Stream, Memo2);
 finally
   Stream.Free;
Memo2.Lines.Add(FLOATTOSTR(YYIL.Value)+' Çalışma yılı oluşturuldu...');
 end;

GBAK ile yukarıdaki şekilde backup alıp restore yapıyorum. Sizde önce metadata yı backup alıp exe ye gömüp, eğer veritabanı yok ise ordan restore yapabilirsiniz sanırım. Bu arada AknConfig bir arkadaşımın yazdığı içinde birçok function barındıran yardımcı bir component, onu kaale almayın, siz shellexecute ile yapabilirsiniz. 

Ben ETICARI_DB_<CalismaYili>.FDB şeklinde her yıl için ayrı veritabanları oluşturuyorum.

Aradigim bi kod du mesajim bulunsun projeme ekleyecegim
Cevapla
#7
@SercanTEK isimli arkadaşımızın bahsettiği (anladığım kadarıyla) script üzerinden veritabanı oluşturmakla ilgili. Bir veritabanını restore edebilmek için backup'lı halinin mevcut olması gerekir. Bu da, program ile birlikte backup dosyasının da gönderilmesi demek. Benim anladığım, sadece EXE dosyasını gönderip çalıştırdığımızda eğer veritabanı yok ise oluştursun isteniyor.

Veritabanı tasarımınız tamamen hazır ve sonradan değişmeyecekse, kullanmış olduğunuz veritabanı aracından (IBExpert, Database Workbench, EMS SQL Manager for Firebird) veritabanınızın DDL dosyasını oluşturabilirsiniz. DDL dosyası CREATE DATABASE xxx şeklinde başlar, ardından CREATE TABLE xxx komutları ile tüm veritabanı script'ini oluşturur. Sizin bahsettiğiniz IBExtract'da bu işi yapıyor zaten. Bu DDL dosyasının içindeki script'i de kopyalayarak program içinde kullanma şansınız olur. Sonradan yaptığınız değişiklikler içinde sadece bu script'i değiştirirsiniz.

Takıldığınız bir konu olursa buradan yardımcı olmaya çalışırım. Kolay gelsin.
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...
Cevapla
#8
(30-05-2019, Saat: 09:18)rmzgenius Adlı Kullanıcıdan Alıntı: @SercanTEK isimli arkadaşımızın bahsettiği (anladığım kadarıyla) script üzerinden veritabanı oluşturmakla ilgili. Bir veritabanını restore edebilmek için backup'lı halinin mevcut olması gerekir. Bu da, program ile birlikte backup dosyasının da gönderilmesi demek. Benim anladığım, sadece EXE dosyasını gönderip çalıştırdığımızda eğer veritabanı yok ise oluştursun isteniyor.

Veritabanı tasarımınız tamamen hazır ve sonradan değişmeyecekse, kullanmış olduğunuz veritabanı aracından (IBExpert, Database Workbench, EMS SQL Manager for Firebird) veritabanınızın DDL dosyasını oluşturabilirsiniz. DDL dosyası CREATE DATABASE xxx şeklinde başlar, ardından CREATE TABLE xxx komutları ile tüm veritabanı script'ini oluşturur. Sizin bahsettiğiniz IBExtract'da bu işi yapıyor zaten. Bu DDL dosyasının içindeki script'i de kopyalayarak program içinde kullanma şansınız olur. Sonradan yaptığınız değişiklikler içinde sadece bu script'i değiştirirsiniz.

Takıldığınız bir konu olursa buradan yardımcı olmaya çalışırım. Kolay gelsin.

merhaba;
bu işlemin aynısını bende yapmaya çalışıyorum. aramada bulamayınca yeni konu açmıştım.
https://www.delphican.com/showthread.php...8#pid39658
her tablonun DDL dosyası var. database ye ait DDL dosyasına nasıl ulaşabilirim. buradaki kodları UniScript yada UniQuery de nasıl kullanabilirim. birçok deneme yaptım. UniQuery yada UniScript içine ilgili kodları yazıp execute edince connection istiyor devamından transection istiyor devamında bir database isityor. 
önce database sonra ilgili tabloları delphi tarafından oluşturup ilgili databaseye bağlantıyı sağlamak istiyorum. bu konuda yardımcı olursanız çok memnun olurum. 
Cevapla
#9
Merhaba.

Kodla veritabanı oluşturmak yerine ibexpert ile oluşturduğum veritabanını kullanıcının değişiklikleri doğrultusunda kopyalayıp ilgili dizine atarak veritabanı oluşturuyorum. İlla sql scrip ile oluşturmayacaksanız örnek bir proje ekliyorum. Umarım işinize yarar.

İyi çalışmalar.


Ek Dosyalar
.zip   VT_Olustur.zip (Dosya Boyutu: 142,58 KB / İndirme Sayısı: 27)
Bazen daha ileriye ulaşmak için bir kaç adım geri gitmek mecburidir. Çünkü en ileri sıçrayışlar iki adım geriden başlar.
Cevapla
#10
(22-08-2020, Saat: 19:32)ihalilcoban Adlı Kullanıcıdan Alıntı: Merhaba.

Kodla veritabanı oluşturmak yerine ibexpert ile oluşturduğum veritabanını kullanıcının değişiklikleri doğrultusunda kopyalayıp ilgili dizine atarak veritabanı oluşturuyorum. İlla sql scrip ile oluşturmayacaksanız örnek bir proje ekliyorum. Umarım işinize yarar.

İyi çalışmalar.

merhaba;
öncelikle örnek uygulama için çok teşekkür ederim.
genelde projelerimde benzer bir çalışma düzeni uyguluyorum. proje tamamlanınca SABLON_DATA.FDB isminde bir database yi program klasörünün içine atıyorum. yeni bir databaseye ihtiyaç olduğunda exe program üzerinden SABLON_DATA.FDB dosyasını DATALAR klasörüne kopyalatıp verilen isim ile rename ederek yeni databaseyi kullandırıyorum.

Bu işlemi bir tık yükseltmek için kodlamayla database yi ve tablolarını oluşturmak istiyorum. zorunlu bir durum yok. Amaç her projede kod yapısını biraz daha geliştirmek.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  pardusda dbeaver ıle fırebırd kullanımı hakkında sadikacar60 8 640 29-02-2024, Saat: 17:50
Son Yorum: Hayati
  Firebird Sound_ex Kodu. COMMANDX 1 309 28-01-2024, Saat: 01:56
Son Yorum: maydin60
  Firebird ile FIFO Hesaplama Nasıl yapılır? klavye 0 367 17-08-2023, Saat: 12:33
Son Yorum: klavye
  IBExpert ile Firebird Veri Kurtarma DelphiCanR 6 7.532 19-07-2023, Saat: 14:42
Son Yorum: baloglurecep
  Firebird Bozuk Dosya Hk. dark12side 1 399 07-06-2023, Saat: 21:53
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi