Firebird veritabanına internetten bağlanma sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Firebird veritabanına internetten bağlanma sorunu

Mesaj gönderen NewMember »

Arkadaşlar Merhaba;
Firebird veritabanını lokal ağda kullanır gibi internet üzerinden bağlanarak kullanmak istiyorum.Ancak bazı sorunlarım var.Eminim başkaları da bu tür sorunlar yaşıyordur.Bu topik altında belki bu sorunları çözebiliriz yada benim yaptığım bir hata varsa düzeltebiliriz.

Öncelikle forumda bu konu ile yazılmış tüm yazıları okudum.Ve bu yazılanlara göre hiçbir sorun yok gibi görünüyor ancak bir sorun var…

Önce programım hakkında bilgi vereyim.Delphi 2005 ile yazıldı.Firebird bağlantı komponenti IBX bileşenleri.Firebird sürümü 2,5.Veritabanında 15-20 adet tablo var.Kayıt sayısı en sık kullanılan tabloda 1000-1500 civarında şu an.Programım veritabanına bir ini dosyadan bağlantı yolunu alarak bağlanıyor.
Örneğin:

Kod: Tümünü seç

Localhost:C:\Data\MYDATA.FDB
gibi bir söz diziniyle.
Yada client olarak kullanılacaksa ;

Kod: Tümünü seç

192.168.1.15:C:\Data\MYDATA.FDB 
gibi bir söz diziniyle gibi…..

Program ilk açıldığında sadece kullanıcıların tutulduğu tabloyu açıp kullanıcı adı ve parola ile giriş yapılıyor ve ana form açılıyor.Sonra hangi form açılırsa o formu ilgilendiren tabloya bağlı dataset açılıyor ve o form kapandığında o datasette kapatılıyor.FetchAll olayı kesinlikle yok…Formlarda birer adet dbgrid bulunuyor.Yani aynı anda çoğu kez bir adet dataset db’ye bağlanıyor.Blob alan sadece bir iki tabloda birer adet var.

Şimdi bu databasein bulunduğu statik ip alan bir bilgisayara internet bağlantısı ile bağlanılacağı zaman ise şu işlemler yapılıyor.Firebird.conf dosyasında port tanımlamaları yapılıyor.O bilgisayarın bağlı olduğu adsl modeminden gerekli yönlendirmeler yapılıyor.Güvenlik duvarından gerekli izinler, hem program izni verilerek, hem portlar açılarak hemde bir sonraki aşama olarak(tabi başarısızlık olunca) güvenlik duvarı pasifize edilerek her türlü kısıtlama kaldırılıyor.

Programın database bağlantı söz dizesi ise aşağıdaki gibi değiştiriliyor.

Kod: Tümünü seç

88.xxx.xxx.179:C:\Data\MYDATA.FDB 
gibi bir söz diziniyle gibi…..Yani ip alanına statik olan bağlanılacak bilgisayarın bağlı olduğu modemin ip nosu giriliyor.

Sonuç;
Program veritabanına bağlanıyor.Kullanıcı tablosuna bağlanıyor.Kullanıcı adı ve parolasını kontrol edip ana sayfaya ulaşıyor.Lokal ağda 1 sn süren bu işlem internet üzerinden olunca 10 sn sürüyor.Bunun normal olduğunu düşünüyorum.Ancak sorun bundan sonra başlıyor.Herhangi bir forma girmek istediğimde yani veri yüklü bir tabloya bağlanılan bir forma girmek istediğimde program donup kalıyor.Ve görev yöneticisinden sonlandırılana kadarda öyle hareketsiz ve donuk şekilde kalıyor.

Formumun kodları hakkında da bilgi vereyim.
Açılırken sadece create yordamında kodum var.Yani show yordamında v.b. kodum yok….

Kod: Tümünü seç

MyDataset.SelectSQL.Clear;
  MyDataset.SelectSQL.Text := 'Select  ADISOYADI,DTAR,BADI,TEL1,TEL2,TEL3,ADRES,IL,ILCE From HASTALAR ';
MyDataset.Open;
Bu kodu deneme amaçlı aşağıdaki şekilde yapıyorum.Sonuç gene değişmiyor.

Kod: Tümünü seç

MyDataset.SelectSQL.Clear;
  MyDataset.SelectSQL.Text := 'Select  ADISOYADI From HASTALAR ';
  MyDataset.Open;
Gene deneme amaçlı DisableControls kodunu kullanıyorum sonuç aynı.
Gene deneme amaçlı formun üzerindeki dbgridin bağlantılarını kopartıyorum.Maalesef sonuç aynı.

Veritabanında bu tabloda bir autoincrement alanım var sayısal tipte ve primary key.Yani indexlemelerim var.Gerçi sorunun bununla bu kadar alakalı olmamamsı gerekir ama aklıma gelen her şeyi siz sormadan yazmak istiyorum.

Bu bağlantı kodunu comment içine alıp derliyorum projeyi.Şak diye açıyor.Bu kodu koyunca donup kalıyor….

Nerede hata yapıyorum.Yorumlarınızı bekliyorum...
Şimdiden teşekkürler....
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Re: Firebird veritabanına internetten bağlanma sorunu

Mesaj gönderen NewMember »

yorum yokmu? :(
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Firebird veritabanına internetten bağlanma sorunu

Mesaj gönderen Hakan Can »

Hocam ben benzer bir çalışma yaptığımda 30 saniye süren açılma işleminin internet üzerinden 30 dakika sürdüğünü test etmiştim.

Öncelikle SQL komutunda "WHERE" şartı veya "FIRST" gibi kısıtlama komutları kullanarak tekrar deneyebilirsin (SELECT FIRST 10 * FROM HASTALAR). Bilhassa FIRST komutu gerçekten donup donmadığı hakkında bilgi verebilir (her denemede kayıt sayısını arttırarak).

Her halukarda belirli bir kayıt sayısından fazla kayıt çekmemeye çalışmalısın. Zira kaydı her post edişinde, refresh olayında vs. çok ciddi beklemeler olabilir.

Bunu da veri girişlerinde "WHERE" şartıyla, raporlamalarda "FIRST, SKIP" falan kullanarak yapabilirsin.

Kolay gelsin.
Cevapla