
.exe içine gömülü SQLite veritabanını okuyabilme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
.exe içine gömülü SQLite veritabanını okuyabilme
İyi günler. Bazı şablon kayıtları (meslek kodları, vergi daireleri listesi v.s. ...) güncellemek için .exe içinde gömülü bilgileri kullanma yolunu seçtim fakat bu kayıt türlerinde zamanla artış oldu. Eğer SQLite ile mümkünse, mevcut yöntem yerine, tek veritabanını .exe ye gömüp, onu çalışma anında okumak isterim. SQLite ile bu mümkün müdür, mümkün ise nasıl olabilir? Farklı yol önerilerine de açığım. Mevcut sistemde MemTable türünden tablolarla çalışmaktayımdır
. İyi çalışmalar, kolay gelsin.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: .exe içine gömülü SQLite veritabanını okuyabilme
Merhaba,
Yapmak istediğiniz sadece SQLite ile değil herhangi bir "embedded database" ile mümkündür. Hatta alternatif yöntem olarak bilgileri "insert into gecici_tablo values()" gibi ifadeler şeklinde bir text dosya içine kaydedip daha yetenekli bir database sisteminin "temporary table" özelliğini kullanarak ilgili verileri database ortamında kullanabilirsiniz.
Basitçe yapmanız gereken gerekli bilgileri içeren dosyayı "resource file" haline çevirip proje resource dosyaları arasına dahil etmek ve çalışma zamanında bu bilgileri okumak olacaktır.
Aşağıdaki iki link üzerinden nasıl resource file oluşturabileceğinizi ve EXE içindeki resource file nasıl okunur öğrenmeniz mümkün. Özetle;
1- SQLite database dosyasını içinde gerekli kayıtlar olduğu halde hazırlayın.
2- Örnekleri kullanarak SQLite database dosyasını "resource file" haline getirin.
3- Resource file projeniz içine dahil edilsin. Böylece derlenmiş EXE içine kaydedilecektir.
4- Çalışma zamanında EXE içindeki ilgili resource dosyanızı okuyup diske kaydedin. İşiniz bittiği zaman disk üzerinden silin.
İlgili linkler:
Resource file hazırlama: http://delphidabbler.com/articles?article=2
Resource file okuma: http://delphidabbler.com/articles?article=3
NOT: İkinci örnekte okunan bilgiyi TResourceStream.SaveToFile() prosedürünü kullanarak diske kaydetmeniz ve daha sonra tercih ettiğiniz database bileşenleri ile kullanmanız gerekir.
Yapmak istediğiniz sadece SQLite ile değil herhangi bir "embedded database" ile mümkündür. Hatta alternatif yöntem olarak bilgileri "insert into gecici_tablo values()" gibi ifadeler şeklinde bir text dosya içine kaydedip daha yetenekli bir database sisteminin "temporary table" özelliğini kullanarak ilgili verileri database ortamında kullanabilirsiniz.
Basitçe yapmanız gereken gerekli bilgileri içeren dosyayı "resource file" haline çevirip proje resource dosyaları arasına dahil etmek ve çalışma zamanında bu bilgileri okumak olacaktır.
Aşağıdaki iki link üzerinden nasıl resource file oluşturabileceğinizi ve EXE içindeki resource file nasıl okunur öğrenmeniz mümkün. Özetle;
1- SQLite database dosyasını içinde gerekli kayıtlar olduğu halde hazırlayın.
2- Örnekleri kullanarak SQLite database dosyasını "resource file" haline getirin.
3- Resource file projeniz içine dahil edilsin. Böylece derlenmiş EXE içine kaydedilecektir.
4- Çalışma zamanında EXE içindeki ilgili resource dosyanızı okuyup diske kaydedin. İşiniz bittiği zaman disk üzerinden silin.
İlgili linkler:
Resource file hazırlama: http://delphidabbler.com/articles?article=2
Resource file okuma: http://delphidabbler.com/articles?article=3
NOT: İkinci örnekte okunan bilgiyi TResourceStream.SaveToFile() prosedürünü kullanarak diske kaydetmeniz ve daha sonra tercih ettiğiniz database bileşenleri ile kullanmanız gerekir.
Re: .exe içine gömülü SQLite veritabanını okuyabilme
exe içine gömmek bence mantıklı değil, 1kb lık değişiklik için 20-30mb lık exe indirmek taşımak mantıksız. exe kendi sitenden sadece scriptleri kontrol edip indirmesi daha mantıklı. yada bu scriptleri exe nin klasörüne kopyalamak ve ordan yaptırtmak daha mantıklı. sqlite ın bile dll i 1,5mb dan fazla 

ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: .exe içine gömülü SQLite veritabanını okuyabilme
Exe bozulursa nasıl kurtaracaksınız veritabanını. Bunlarda sorun. Gömülü olarak kalsın kimse incelesin istemiyor iseniz şifrelersiniz.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: .exe içine gömülü SQLite veritabanını okuyabilme
İşin aslı bu işlem için türlü türlü yöntemler seçilebilir. .exe içinde farklı tablolar ile kayıt tutmak da bunlardan birisi. Ayrıca bu bilgiler şifreli olmak zorunda değiller. Disk ile hiç muhatap olmadan, .exe içinde bir veritabanı bulundurup, bunları okuma meselesi aklıma bayağı takıldı. Çözüm ararsam bu seçenek dışında bir dolu çözüm var ama merak işte. Aklıma bu mesele takıldı
.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: .exe içine gömülü SQLite veritabanını okuyabilme
merak iyidir
ertank ın dediği resource a db yi olduğu gibi ekleyebilirsin.
delphi 7 yada öncesinde bende merak üzerine, dll içine 10,15 tane wallpaper gömüp, ikinci dll e de db nin ddl ini gömmüştüm. Resimler sırayla belli sürede dll den okunup, ana forma aktarılıyordu. Merak nelere kadir

delphi 7 yada öncesinde bende merak üzerine, dll içine 10,15 tane wallpaper gömüp, ikinci dll e de db nin ddl ini gömmüştüm. Resimler sırayla belli sürede dll den okunup, ana forma aktarılıyordu. Merak nelere kadir

ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!