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