Yorumları: 32
Konuları: 9
Kayıt Tarihi: 13-10-2016
Rep Puanı: 160
Başlangıç
Merhabalar
ADOConnection1.Connected Sql server sonradan stop olursa True değeri döndürüyor.
bende Rollback yaparken hata alıyorum
bu kısmı try-except'e almadan ADOConnection'ın durumunu refresh yapabilir miyiz?
Finally
if ADOConnection1.Connected then
if Hata then
ADOConnection1.RollbackTrans;
end;
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375
Üstad
Gönderdiğiniz sorgular başarılı bir şekilde çalışıp çalışmadığı bilgisi ile ilerlemeniz daha faydalı olur. Sorgu hataya düşerse veya "başarılı bir şekilde çalıştım" bilgisi geri dönmezse ilgili tabloya Rollback yaparsınız. Diğer türlü Pascal kodunuz SQL Server servislerinin durup durmadığını AdoConnection nesnesi ile yönetemez. Bu imkansız.
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
Öncelikle belirteyim, mevcut Connection bir nedenden ötürü koptu ise; zaten açık transaction'lar Rollback olurlar. Sizin arzu ettiğiniz Connection'ın kopmasından haberdar olmak ise maalesef ADO'nun böyle bir desteği yok. Ancak, bu yapamazsınız demek de değil. Arka planda programınız açık olduğu müddetçe çalışacak bir bir thread yapıp, belirli periyotlar ile bir Connection üzerinden veritabanı sunucusuna sorgu atabilirsiniz. Tabii bu sorgunun basit ve minimum maaliyetli bir sorgu olması tercih edilir. Örneğin; bir string'în reverse edilmesi, gönderdiğiniz bir sayının 1000'den farkının geri döndürülmesi vb.
Bu sayede veritabanı sunucusuna erişebildiğinizi ya da erişemediğinizi anlayabilirsiniz. Erişememeniz için birden fazla neden olabilir. Veritabanı sunucusunun servisinin durmuş olması, ilgili makinanın kapalı olması, network problemleri vs. Böyle bir durum ile karşılaştığınızda, ilgili thread ana thread'i bilgilendirebilir ve ana thread mevcut Connection nesnesini kapatıp yeniden açmayı deneyebilir. Ya da kullanıcıyı durum hakkında bilgilendirir ve veritabanı ile ilgili iş yapacak olan modülleri bir şekilde kilitlersiniz.
Çözüm aradıktan sonra elbette çözümsüz değiliz ;-)
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 27
Konuları: 1
Kayıt Tarihi: 29-08-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 122
Başlangıç
Merhaba,
Eğer server elektriğinin gidip gelmesi, serverin anlık kapanması vb. durumlarda bağlantının aktiflik durumunu doğru olarak elde etmek istiyorsanız Connection nesnesine ait ClearPool diye bir metot mevcut. Bunu araştırmanızı öneririm.
Aksi durumlarda bağlantı havuzunda mevcut bir bağlantı olduğu için performans sebebiyle bu bağlantının durumunu size cevap olarak dönebiliyor. Bu sefer bağlantı gitmiş bile olsa siz bağlantı açık sanıyorsunuz.
Tabii bu dediklerim Disconnected olarak tasarlanmış bir uygulama için kullanıma uygun. Siz uygulama açılışında bir connection açıp kapatılana kadar o uygulama üzerinden devam ediyorsanız size uygun bir çözüm olmayacaktır.
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
(05-10-2018, Saat: 09:32)mustafasivlin Adlı Kullanıcıdan Alıntı: Merhaba,
Eğer server elektriğinin gidip gelmesi, serverin anlık kapanması vb. durumlarda bağlantının aktiflik durumunu doğru olarak elde etmek istiyorsanız Connection nesnesine ait ClearPool diye bir metot mevcut. Bunu araştırmanızı öneririm.
Aksi durumlarda bağlantı havuzunda mevcut bir bağlantı olduğu için performans sebebiyle bu bağlantının durumunu size cevap olarak dönebiliyor. Bu sefer bağlantı gitmiş bile olsa siz bağlantı açık sanıyorsunuz.
Tabii bu dediklerim Disconnected olarak tasarlanmış bir uygulama için kullanıma uygun. Siz uygulama açılışında bir connection açıp kapatılana kadar o uygulama üzerinden devam ediyorsanız size uygun bir çözüm olmayacaktır.
Hangi Connection sınıfından bahsediyorsunuz ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...