Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi de ADOConnection kullanarak SQL Server' a Bağlanma Procedure
#1
Merhaba uzun zamandır kullandığım bir procedure paylaşmak istiyorum. Bu procedure ile SQL Server' a kolaylıkla bağlanabilirsiniz.

procedure Veritabanina_Baglan(Sifre : String; Kullanici : String; Veritabani_Adi : String;Server_IP: String; SQL_Server_Adi : String;  Baglanti:TADOConnection);
var
 i: integer;
begin
 try
   if SQL_Server_Adi = '' then
   begin
     Baglanti.Connected        := False;
     Baglanti.ConnectionString := 'Provider=SQLOLEDB.1'+';Password='+Sifre+';Persist Security Info=True '+';User ID ='+Kullanici+';Initial Catalog='+Veritabani_Adi+';Data Source='+Server_IP+';';
   end
   else
   begin
     Baglanti.Connected        := False;
     Baglanti.ConnectionString := 'Provider=SQLOLEDB.1'+';Password='+Sifre+';Persist Security Info=True'+';User ID ='+Kullanici+';Initial Catalog='+Veritabani_Adi+';Data Source='+Server_IP+'\'+SQL_Server_Adi+';';
   end;
   Baglanti.Connected := True;
   if Baglanti.Connected then
   begin
   end;
  except
   MessageDlgTranslated('Bağlantı kurulamadı.',mtError,[mbOK],mbOK,0);
 end;
end;
NUH EROĞLU
Elektrik-Elektronik Yük. Müh.
Cevapla
#2
Merhaba,

Paylaşımınız için teşekkürler. İçeriğinizi biraz genişletmek ve iyileştirmek adına birkaç tavsiyede bulunacağım.

1. Bağlantı cümleciği(connectionString)ni dışarıdan besleyen bir metod daha oluşturmanızda fayda var. Gömülü DBC bilgileri olmayan projelerinizde, özellikle outsource olduğu zaman dışarıdan okuma yapmanız avantaj sağlar.

2. Şifreleme algoritması hassas verileri işlerken çok önemlidir. Bilinen meşhur yöntemlere sadık kalabilirsiniz veya sezar yöntemine benzer kendi benzersiz yönteminizi geliştirebilirsiniz. Bu tarz doğrudan hassas veri içeren metodlara şifreli verileri dışarıdan besleyip içeride şifre çözme algoritmasını çalıştırırsınız. Böylece dışardaki şifreli görüntü anlaşılması zor, kırılması için şifre anahtarınızın tespiti veya uzun bir hack işlemi gerektirir.

3. Veritabanı bağlantısını procedure üzerinden bir sınıfa aktarıp CRUD operasyonları ve harici olarak Stored Procedure, Sequence gibi veritabanı özelliklerini kullanabileceğiniz generic metodlar oluşturabilirsiniz.

4. Oluşturacağınız bu metodları besleyen generic bir işçi sınıfı oluşturup tüm VT işlemlerini otomatize edebilirsiniz. (Bkz: Generic Repository Pattern)
Cevapla
#3
(11-04-2021, Saat: 20:41)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Merhaba,

Paylaşımınız için teşekkürler. İçeriğinizi biraz genişletmek ve iyileştirmek adına birkaç tavsiyede bulunacağım.

1. Bağlantı cümleciği(connectionString)ni dışarıdan besleyen bir metod daha oluşturmanızda fayda var. Gömülü DBC bilgileri olmayan projelerinizde, özellikle outsource olduğu zaman dışarıdan okuma yapmanız avantaj sağlar.

2. Şifreleme algoritması hassas verileri işlerken çok önemlidir. Bilinen meşhur yöntemlere sadık kalabilirsiniz veya sezar yöntemine benzer kendi benzersiz yönteminizi geliştirebilirsiniz. Bu tarz doğrudan hassas veri içeren metodlara şifreli verileri dışarıdan besleyip içeride şifre çözme algoritmasını çalıştırırsınız. Böylece dışardaki şifreli görüntü anlaşılması zor, kırılması için şifre anahtarınızın tespiti veya uzun bir hack işlemi gerektirir.

3. Veritabanı bağlantısını procedure üzerinden bir sınıfa aktarıp CRUD operasyonları ve harici olarak Stored Procedure, Sequence gibi veritabanı özelliklerini kullanabileceğiniz generic metodlar oluşturabilirsiniz.

4. Oluşturacağınız bu metodları besleyen generic bir işçi sınıfı oluşturup tüm VT işlemlerini otomatize edebilirsiniz. (Bkz: Generic Repository Pattern)

Merhaba tavsiyeleriniz için teşekkür ederim. Bu önerilerinizi dikkate alacağım.
NUH EROĞLU
Elektrik-Elektronik Yük. Müh.
Cevapla
#4
Ben daha pratik bir metot önereyim;

Uses ADODB;


Var DefCnnStr : string;

DefCnnStr :=PromptDataSource(HWND,DefCnnStr );


Kodu ile windows apisini çalıştırıp alttaki ekranı çağırıp,  oluşan connection stringi zahmetsiz direk alabilirsiniz.
Sonrasında aldığınız bu stringi şifreleyip dilediğiniz şekilde saklayıp kullanırsınız.

O557MQ.jpg

Yada size parse edilmiş hali lazımsa 

    ado := TADOConnection.Create(nil);
ado.ConnectionString := DefCnnStr;

usr := ado.Properties['User ID'].Value;
pwd := ado.Properties['Password'].Value;
db  := ado.Properties['Initial Catalog'].Value;
srv := ado.Properties['Data Source'].Value;

veya kendinizde ';' karakteri ile metni split edebilirsiniz.
Mükemmel, Mümkünün Düşmanıdır 
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Örnek Delphi x64 Inline Assemblier Fonksiyonları PROGRAMADOR35 10 1.457 01-01-2021, Saat: 21:34
Son Yorum: PROGRAMADOR35
Thumbs Up [Delphi] Yeni Başlayanlar İçin Güzel Kaynak Halil Han BADEM 3 3.607 27-12-2020, Saat: 23:28
Son Yorum: Hayati
  Delphi Çift Yönlü Bağlı Liste Ekleme,Silme,Listeleme,Arama narkotik 0 1.218 26-11-2018, Saat: 22:05
Son Yorum: narkotik
  Delphi Bağlı Liste Ekleme,Silme,Listeleme narkotik 1 1.534 21-10-2018, Saat: 14:59
Son Yorum: sabanakman
  Server Satın Almanıza Gerek Yok Boşuna Para Ödemeyin hakanharbeli 19 8.637 14-05-2018, Saat: 20:55
Son Yorum: hakanharbeli



Konuyu Okuyanlar: 1 Ziyaretçi