Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi ile SQL server bağlantı hatası yakalama
#14
GPT nin cevabı:

Aşağıda Delphi 7 + ADO + SQL Server için bağlantı koptuğunda yeniden bağlanma ve uygulamayı kapatıp açmaya gerek kalmaması için kullanılan en güvenilir yaklaşımı adım adım anlatıyorum.

Temel Sorun
ADOConnection bağlantısı koptuğunda (network kesilmesi, bilgisayarın uykuya geçmesi, kablo çıkması vs.) ADO’nun iç durumu “bozuluyor”.
ADO otomatik olarak yeniden bağlanmaz ve bu nedenle bütün Query/Command bileşenleri hataya düşer. Bu ADO’nun bir “eksikliğidir”.
Dolayısıyla manuel olarak yeniden bağlanma işlemi yazmanız gerekir.

En Sağlıklı Çözüm: "Connection Health Check" + "Auto-Reconnect"

Adım 1 — ADOConnection için bir fonksiyon yazın
DataModule’ünüze şu fonksiyonu ekleyin:

function TDM.CheckAndReconnect: Boolean;
begin
 Result := True;

 try
   // Bağlı değilse bağlan
   if not ADOConnection1.Connected then
     ADOConnection1.Connected := True;

   // Bağlantı bozulmuş mu diye test sorgusu çalıştır
   ADOConnection1.Execute('SELECT 1');
 except
   on E: Exception do
   begin
     Result := False;

     // Yeniden bağlanmayı deneyelim
     try
       ADOConnection1.Connected := False;
       Sleep(500);   // küçük bekleme
       ADOConnection1.Connected := True;

       // Bağlantı tekrar test edilir
       ADOConnection1.Execute('SELECT 1');
       Result := True;
     except
       Result := False;
     end;
   end;
 end;
end;

Bu fonksiyon:
  1. Bağlantı kopmuş olsa bile önce bağlantıyı kapatır.
  2. Tekrar bağlanmayı dener.
  3. Mini test sorgusu ile bağlantıyı doğrular.

    Adım 2 — Tüm Query işlemlerinden önce bağlantı kontrolü


    ADOQuery/ADOCommand çalıştırmadan önce:
    if not DM.CheckAndReconnect then
    begin
     ShowMessage('Veritabanı bağlantısı sağlanamadı. Lütfen ağınızı kontrol edin.');
     Exit;
    end;
    

    Adım 3 — Global Exception Handling içinde de kontrol

    Formlarınızda veya proje dosyanızda:

    try
      if not DM.CheckAndReconnect then
       ShowMessage('Bağlantı kesildi. Yeniden bağlanılamadı.');
    except
     on E: EOleException do
     begin
       if Pos('communication', LowerCase(E.Message)) > 0 then
         DM.CheckAndReconnect;
     end;
    end;
    

    Adım 4 — Timeout ve ConnectionString ayarları

    ConnectionString'e şunu ekleyin:
    Connect Timeout=5;
    

    ADOConnection nesnesine:
    LoginPrompt := False;
    KeepConnection := True;
    

    Ek olarak:
    CommandTimeout := 10;
    ConnectionTimeout := 5;
    

    Uyku Modunda Bağlantı Kaybı Problemi
    Laptop uykuya geçince ağ kartı kapanır ve bağlantı mutlaka kopar.
    Bu nedenle uygulamanızda timer ile periyodik bağlantı kontrolü ekleyebilirsiniz:

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
     DM.CheckAndReconnect;
    end;
    

    Alternatif Olarak (Daha Dayanıklı): MARS / FireDAC / Zeos
    ADO eski bir teknoloji olduğu için bağlantı bozulunca çok kolay çöküyor.
    Eğer geleceğe dönük bir çözüm isterseniz:
    • FireDAC (Delphi XE4+)
    • ZeosLib (Delphi 7 ile uyumlu)
    • MARS-DGL (REST servisleri)
  4. ADO’ya göre çok daha stabil bağlantı yenileme mekanizmaları var.
  5. ✔️ Sonuç
    Bu yöntemle:
    • Ağ gidip gelse bile uygulamanız yeniden bağlanır.
    • Kullanıcı uygulamayı kapatmak zorunda kalmaz.
    • Uyku modundan geri geldiğinde bile bağlantı yeniden kurulur.


      Lütfen deneyip bilgi verebilir misiniz? Gerçekten işe yarayacak mı bende merak ettim.
Cevapla


Bu Konudaki Yorumlar
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 02-11-2025, Saat: 19:04
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 03-11-2025, Saat: 10:33
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 03-11-2025, Saat: 18:31
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 04-11-2025, Saat: 15:06
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 04-11-2025, Saat: 22:13
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 17-11-2025, Saat: 13:02
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Hayati - 18-11-2025, Saat: 09:12
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 18-11-2025, Saat: 11:48
Delphi ile SQL server bağlantı hatası yakalama - Yazar: Under - 18-11-2025, Saat: 19:45

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  matematiksel karşılaştırma hatası nevzatc 7 533 14-04-2026, Saat: 06:36
Son Yorum: emailx45
  yapay zeka delphi kl007 9 686 26-02-2026, Saat: 09:12
Son Yorum: mrmarman
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 565 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 388 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  Delphi SLL kullanım sorunu Bay_Y 12 1.372 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi