Memik Yanık - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim

SQL Server Veritabanına Bağlanmak


Delphi’nin .NET uyumlu sürümünde SQL veritabanlarına bağlanmak için birden fazla teknik bulunmaktadır. Burada kısaca BdpConnection sınıfından söz edeceğim. Kod yazarak BdpConnection nesnesini hazırlayabilmek için Borland.Data.Provider ve Borland.Data.Common namespace’lerindeki sınıflardan yararlanılmak istendiğinin önceden belirtilmesi gerekmektedir.

Veritabanına bağlanırken BdpConnection nesnesinden yararlanmak istediğim için Load olayını temsil eden metotta BdpConnection tipinde bir değişken tanımladım. Ayrıca BdpConnection nesnesinin ConnectionString özelliğini ayarlarken kullanmak üzere “Baglanti_metni” adında bir String değişken tanımladım.

Var
  Baglanti : BdpConnection;
   Bağlantı_metni : String;

İlk olarak SQL Server veritabanları için bağlantı hazırlayacağım. Connection nesnesinin ConnectionString özelliğine anahtar-değer çifti şeklinde düzenlenen çok sayıda bilgi aktarılmaktadır. Bu bilgilerin arasına noktalı virgül(;) koyarak hepsini aynı satıra yazabilirsiniz. Bu bilgilerin her birisine Segment adı verilmektedir.

Konunun kolay izlenmesini sağlamak için ConnectionString özelliğine aktarılacak her bilgi için Segment1, Segment2 şeklinde 8 string değişken tanımladım. Bu bilgilerin hepsini ConnectionString özelliğine aktarmak zorunlu değildir.

Var
  Baglanti : BdpConnection;
  Bağlantı_metni : String;
  Segment1, Segment2, Segment3 : String;
  Segment4, Segment5, Segment6 : String;
  Segment7, Segment8: String;
  Segment1 := 'assembly=Borland.Data.Mssql,' +
              'Version=1.5.1.0,Culture=neutral,' + 'PublicKeyToken=91d62ebb5b0d1b1b;';
  Segment2 := 'vendorclient=sqloledb.dll;';
  Segment3 := 'osauthentication=True;';
  Segment4 := 'database=Cari;';
  Segment5 := 'hostname=BILGISAYAR2;';
  Segment6 := 'username=myuser;';
  Segment7 := ‘password=mypassword;';
  Segment8 := 'provider=MSSQL;';
  Baglanti_metni:=Segment1+Segment2+Segment3+Segment4+
  Segment5+Segment6+Segment7+Segment8;

Assembly adlı ilk segment ile söz konusu bağlantının kullanacağı Assembly veya referans işaret edilmektedir. Bu segmentin devamında kullanılan PublicKeyToken’ı Delphi ile birlikte verilen yardım metinlerinden aldım.

osauthentication segmenti ile veritabanın korunma tekniği(Windows veya SQL Server), hostname segmenti ile SQL Server olarak kullanılan veya veritabanın saklandığı bilgisayarın adı, database segmenti ile üzerinde işlem yapılmak istenen veritabanı belirtilmektedir. Üzerinde işlem yapmak istediğim SQL Server veritabanın koruma işlemini Windows’a havale ettiğim için osauthentication segmentine True aktardım.

Veritabanını koruma işleminin SQL Server tarafından yapılması konusunda ayarlama yapmış olsaydım bu segmente False aktarıp Username ve Password segmentleri ile kullanıcı adını ve parolasını ConnectionString özelliğine eklemem gerekirdi.

osauthentication segmentine True bilgisini aktardığım için username ve password segmentlerine Delphi’nin aktardığı başlangıç değerlerine bağlı kaldım. osauthentication segmentine True değerini aktardığım, başka bir deyişle bağlanacağım veritabanın korunması işlemi Windows’a havale edildiği için username ve Password segmentlerini sildim. Bu 2 segmenti silince yukarıda verdiğim kod aşağıdaki gibi oldu.

Segment1 := 'assembly=Borland.Data.Mssql,' +
'Version=1.5.1.0,Culture=neutral,' + 'PublicKeyToken=91d62ebb5b0d1b1b;';
Segment2 := 'vendorclient=sqloledb.dll;';
Segment3 := 'osauthentication=True;';
Segment4 := 'database=Cari;';
Segment5 := 'hostname=BILGISAYAR2;';
Segment6 := 'provider=MSSQL;';
Baglanti_metni:=Segment1+Segment2+Segment3+Segment4+Segment5+Segment6;

ConnectionString özelliğine aktarılacak metni bu şekilde hazırladıktan sonra BdpConnection nesnesini aşağıda verdiğim 2 satır ile oluşturup Open() metodu ile veritabanına bağlandım. Açmış olduğunuz bağlantıyı istediğiniz zaman Close metodu ile kapatabilirsiniz.

Baglanti := BdpConnection.Create(Baglanti_metni);
Baglanti.Open;

BdpConnection nesnesinin açılıp açılmadığını State özelliğine bakarak öğrenebilirsiniz. Söz konusu Connection nesnesi açılmış ise State özelliği True, yoksa False değerini içermekte¬dir. State özelliğinin nasıl kullanıldığını aşağıda görebilirsiniz.

Var
  Durum : Boolean;
begin
  Durum := Convert.ToBoolean(Baglanti.State);
  If Durum = True Then
    MessageBox.Show('Bağlantı açık')
  else
     MessageBox.Show('Bağlantı açık değil');
end;

Bu kodda Connection nesnesinin açılıp açılmadığını öğrenmek için Boolean bir değişken tanımladım ve State özelliğinin içeriğini bu değişkene aktardım. Connection nesnesinin ayrıca ConnectionState adında ReadOnly bir özelliği bulunmaktadır. Bu özellik Connection nesnesinin durumu hakkında bilgi içermektedir. Bu özelliğin nasıl kulla¬nıldığını aşağıda görebilirsiniz.

begin
  If Baglanti.State = ConnectionState.Open Then
    MessageBox.Show('Bağlantı açık')
  else if Baglanti.State = ConnectionState.Closed Then
    MessageBox.Show('Bağlantı kapatılmış'); 
end;

Delphi 12.04.2009 19:47:48

YORUM YOK


YorumlarYorum Yaz
Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan www.semgoksu.com