try except kullanarak veritabanına bağlanma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
a_o
Üye
Mesajlar: 84
Kayıt: 18 Eki 2005 04:41
Konum: Tekirdağ

try except kullanarak veritabanına bağlanma

Mesaj gönderen a_o »

mrb arkadaşlar
sql server kullanarak yapmış olduğum bir veritabanım var. bu projede formun on create olayında ayarlar.ini diye bir dosyadan bağlantı şifrelerini okuyup editlere atıyorum. daha sonra bağlantımda editleri yerine koyuyorum.

Kod: Tümünü seç


ADOConnection1.Connected:=false;
ayarlar := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'ayarlar.ini');
edit1.Text:=ayarlar.ReadString('1','1','');
edit2.Text:=ayarlar.ReadString('2', '2','');
edit3.Text:=ayarlar.ReadString('3', '3','');
ayarlar.Free;

ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+edit1.text+';Initial Catalog='+edit2.Text+';Data Source='+edit3.Text;
ADOConnection1.Connected:=true;

end;


normalde yukarıdaki kod çalışıyor. ama ben eğer bağlantı şifrelerinde hata varsa bana hata msjı versin istiyorum. bunun içn try except bloğu kullandım ama çalışmadı. delphi kendisi hata veriyor. veritabanına bağlanamadı diye. oysa o hata msjını ben kendim yazdırmak istiyorum. ama olmadı. bu konuda yardımcı olabilirmisiniz?
herkese iyi çalışmalar
kolay gelsin

Kod: Tümünü seç


ADOConnection1.Connected:=false;
ayarlar := TINIFile.Create(ExtractFilePath(Application.EXEName) + 'ayarlar.ini');
edit1.Text:=ayarlar.ReadString('1','1','');
edit2.Text:=ayarlar.ReadString('2', '2','');
edit3.Text:=ayarlar.ReadString('3', '3','');
ayarlar.Free;

try
ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+edit1.text+';Initial Catalog='+edit2.Text+';Data Source='+edit3.Text;
ADOConnection1.Connected:=true;
except
begin
showmessage('Bağlantı hatası....');
anagiris.Close;
end;
end;

Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Programı delphiyle çalıştırdığın zaman exception gizlenmez. Programı delphi dışından çalıştır. Öyle bir bak istersen.

Kolay gelsin.
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

Delphi içerisinden çalıştırırken excepti dikkate alması için ayarlar kısmından bir değişiklik yapmanız gerekiyor. Bundan bahsedilmişti daha önce, tam hatırlamıyorum. Ama sonucu exe'yi kendiniz çalıştırıp (Delphi içerisinden değil) görebilirsiniz.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Mesaj gönderen abdulkadir »

baglı olup olmadıgını böyle kontrol ederek denermisin.

Kod: Tümünü seç

  
if ADOConnection1.Connected then
  begin
     Showmessage('Baglı'); //işlemler
  end 
       else 
        Showmessage('Baglı degil');
  end;
 
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

delphinin çıkardığı hataynın ismini (sabitini) bir yere not al. Genelde "E" ile başlar. Mesela EZeroDivide.. Daha sonra try except bloğunu aşağıdaki gibi değiştir:

Kod: Tümünü seç

try
{ bağlantı kodları }
except
  on EHataSabiti do 
  begin
    MessageBeep(MB_ICONEXCLAMATION);
    MessageDlg("Şundan dolayı bağlanamadı", mtError, [mbOK], 0);
  end;
end;
UNUTMA ki debug zamanında delphi bütün hataları gösterir. Göstermemesi için ayarlarından bir kaç yeri değiştirmelisin. Ama tavsiye etmem. Nasolsa delphi dışında çalıştırınca bu hata yerine senin istediğin hata görünecektir.

vesselam
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

try / except /end i kullanabilmen için Delphi menü / Tools / Debugger Options.. Language Exeptions tab ından en alttaki "Ston on Delphi Exceptions" daki işareti kaldırmalısın :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
a_o
Üye
Mesajlar: 84
Kayıt: 18 Eki 2005 04:41
Konum: Tekirdağ

Mesaj gönderen a_o »

mrb arkadaşlar dediğiniz gibi programı exesinden çalıştırınca çalıştı.
ama try except bloğunda bağlantı kurulamazsa programı kapat diorum. programı kapatıyo. aradan 10 sn geçtikten sonra ekrana şu uyarı msjını veriyor.

Kod: Tümünü seç

[DBNETLIB][ConnectionOpen(Connect()).]Sql Server yok veya erişim engellendi.
bu şekilde bi hata msjı vermesini istemiyorum. nasıl engelleyebilirim bunu?

bide o hata msjı çıkmadan önce kendi hata msjımı verdirdikten sonra programı kapat diorum. ama kapatmıyor. görev yöneticisinde hala çalışıyor görünüyor. bunu nasıl engelleyebilirim? (kodlar ilk yazdığım kodlar şeklinde)

kolay gelsin.
herkese ii çalışmalar
a_o
Üye
Mesajlar: 84
Kayıt: 18 Eki 2005 04:41
Konum: Tekirdağ

Mesaj gönderen a_o »

mrb arkadaşlar

kodda anagiris.close kullanıyordum. onun yerine Application.Terminate; die yazınca düzeldi. artık o hatayı vermiyor.

yardımcı olan herkese tşk ederim
ii çalışmalar
Cevapla