Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ADOConnection bağlantı kontrolü hakkında
#1
Merhaba, öğrenciyim ve Delphi dilini yeni öğrenmeye başlıyorum. Veri tabanına bağlanmamı gerektirecek her işlemden önce bağlantıyı kontrol edip eğer bağlı değil ise bağlanmayı deneyen bir fonksiyon yazdım. Uzak sunucuyla bağlantı kurulduğu durumlardaki olası hataları veya bağlantının herhangi bir sebepten koptuğu durumları doğru şekilde kontrol etmek için ekte paylaştığım fonksiyon yeterli olur mu? Kendim SQL servisini durdurup tekrar başlatarak testler yaptım ancak gözümden kaçan bir şeyler illa ki vardır o yüzden bu bağlantı kontrolünden emin olmak için yapmam gerekenleri öğrenmeye çalışıyorum. 

-Projede tek bir ADOConnection nesnesi kullanıyorum ve KeepConnection özelliğini true olarak tercih ediyorum.

function TForm1.isDatabaseConnected(Conn: TADOConnection): Boolean;
begin
 Result := False;

 try
   // Bağlı değilse bağlanmayı dene
   if not Conn.Connected then
   begin
     try
       Conn.Connected := True;
     except
       on E: Exception do
       begin
         ShowMessage('Veritabanı bağlantısı kurulamadı: ' + E.Message);
         Exit;
       end;
     end;
   end;

   // Conn.Connected=true ise test sorgusu çalıştır
   try
     Conn.Execute('SELECT 1');
     Result := True; //test sorgusu çalıştıysa bağlı kabul et
   except
     on E: Exception do
     begin
       ShowMessage('Bağlantı başarısız: ' + E.Message);
       Conn.Connected :=False; //test sorgusu çalışmadıysa bağlı değil kabul et
       Result := False;
     end;
   end;

 except
   on E: Exception do
     ShowMessage('Bağlantı kontrol hatası: ' + E.Message);
 end;
end;
Cevapla
#2
Bağlantının sağlıklı olup olmadığını ancak işlem yapmak istediğimizde anlayabiliyoruz.

Uzak ağ noktası yerel bir router altında komşu bilgisayar da olabilir internet üzerinden uzakta da. Bu nedenle bağlantıyı işi bittiğinde kapatmak en sağlıklısıdır. Açık bırakmazsanız projeniz sağlıklı çalışır.

Yapmanız gereken,  timeout ile biten propertyleri kısa tutmak.

ConnectionTimeout bağlantı zaman aşımı için 3000 verirseniz bağlantı kurulana kadar maks. 3 saniye bekler

Query SQL işlemlerine bu bağlantı sağlanınca geçersiniz.

Açık database (TAdotable vs.) kullanmanızı tavsiye etmem.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 218 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Video Oynatma Hakkında adelphiforumz 7 869 17-12-2025, Saat: 07:36
Son Yorum: mrmarman
  Delphi ile SQL server bağlantı hatası yakalama Under 20 2.049 21-11-2025, Saat: 15:24
Son Yorum: mrmarman
  nduWlanAPI Kullanımı hakkında nurah 3 823 09-09-2025, Saat: 09:33
Son Yorum: RAD Coder
  AES Şifreleme Hakkında tmrksmt 25 5.952 06-09-2025, Saat: 22:12
Son Yorum: delphi.developer



Konuyu Okuyanlar: 1 Ziyaretçi