Selçuk ÖZKAN
1-) Veritabanımıza bağlanmak için bir SqlConnection nesnesi, 2-) Veritabanındaki bilgileri kullanmak (seçme, kaydetme, silme, güncelleme) için SqlCommand 3-) SqlCommand ın yapacağı işlem için bir sorgu string'i ( SELECT * From Categories gibi) 4-) Sanal bir tablo oluşturmak için DataTable (Sanal tablo, veritabanından istediğimiz tabloyu bir kerelik çekerek bağlantısız (disconnected) çalışmamızı sağlar. Performans açısından en başarılı metottur.) 5-) Bağlantısız çalışabilmemizi sağlayan, bir nevi köprü vazifesi yapan SqlDataAdapter (DataTable'yi doldurmak için) 6-) ve veriyi okuyacak bir SqlDataReader.
A. SqlConnection sınıfı (nesnesi) Veri tabanına bağlantıyı kurar B. SqlCommand sınıfı (nesnesi) Veri tabanında çalıştırılacak sorguları (query) içerir C. SqlDataReader sınıfı (nesnesi) Sorgu sonucu veritabanından dönen veriyi tutar D. SqlDataAdapter sınıfı (nesnesi) Bağlantılı katman ile bağlantısız katman etkileşimini sağlar
Property:özellik,nitelik,aidiyet 1-ConnectionString (bağlantı cümlesi) 2-ConnectionTimeOut(bağlantı süresi) (varsayılan değer 15 saniye) 3-Database(veritabanı) 4-DataSource
SqlConnection nesnesi, bir SqlServer database i ile bağlantı kurmamızı sağlar. Yapmamız gereken ilk şey System.Data.SqlClient import etmek. Bu şart değil fakat işimizi büyük ölçüde kolaylaştıracaktır. Sonra bir SqlConnection nesnesi oluşturacağız: Dim bag As New SqlConnection SqlConnection nesnesi String şeklinde bir parametre alır ki, bu String bizim bağlantımızı kuracak olan cümleyi içerecek. Bu, bilgisayardan bilgisayara değişebilir. Açık yazım Dim strbaglanti As String =("Data Source=SELCUK-PC;Initial Catalog=deneme; Integrated Security=True") Dim bag As New SqlConnection bag.connectionstring = strbaglanti Birleşik yazım Dim bag As New SqlConnection ("Data Source=SELCUK-PC; Initial Catalog=deneme; Integrated Security=True")
Windows Authentication ile bağlantı kuracaksam Integrated Security = True Kullanıcı adı ve şifre verilmeden yapılacak bağlantılarda true değeri, kullanıcı adı ve şifre kullanılarak yapılacak bağlantılarda false değerini almalı
Bir bağlantının sağlanması için gerekli süreyi belirtir. Bu süre boyunca bağlantı sağlanamaması bir hatanın fırlatılmasına neden olacaktır. Bu özellik yalnız-okunabilir (read-only) bir özellik olduğundan, değerini doğrudan değiştiremeyiz. Bunun için, bu özelliği ConnectionString içerisinde belirlememiz gerekir. baglan2.connectionstring = ;Connection Timeout=10" Not:Değeri sıfır verilirse bağlantı kurulana kadar beklenir,0 dan küçük olursa hata oluşur
Bağlanılan veri tababının adını gösterir. Dinamik olarka değiştirilebilir.( ChangeDatabase() metodu) A.4.-DataSource Bağlanılan sql server adıdır
1-Open(), tanımlanan bağlantıyı açar,yani bağlantı kurar baglan.open() 2-Close(),bağlantıyı kapatır baglan.close() 3-ChangeDatabase(),veritabanını değiştirir baglan.changedatabase("master")
SqlCommand aslında bir çeşit Sql komutudur; SELECT tc_no From Muşteri gibi. Bildiğimiz Sql komutu ne işe yarıyorsa SqlCommand da ayni ise yarar. Yani veritabanındaki kayıtları göstermek, silmek, güncelleme ve veritabanına yeni kayıt girme işlemlerinde kullanılır. Property(özellikleri) 1-CommandText( sorgu cümlesi) 2-CommandTimeout( sorgu süresi) varsayılan 30 saniye 3-CommendType (sorgu tipi) 4-Connection (bağlantı)
Dim strbaglanti As String = ("Data Source=SELCUK-PC;Initial Catalog=deneme; Integrated Security=True ) Dim CN As New SqlConnection(strBaglanti) *Dim CMD As New SqlCommand *CMD.Connection = CN Dim strq As String = "SELECT * FROM Musteri" *CMD.CommandType = CommandType.Text *CMD.CommandText = strq CommandType : Kullanilacak Sql komutunun (cümlesinin) tipini belirler. Bunlar Text, StoredProcedure, TableDirect şeklinde olabilir. *Dim CMD As New SqlCommand(strQ, CN)
Command nesnesi ile işletilecek komutun türünü belirtir. 1-CommandType.Text (varsayılan) string olarak atanan sql cümlesi 2-CommandType. StoredProcedure store procedure (saklı yordamlar) için 3-CommandType.TableDirect
Belirtilen komutun çalıştırılmaya başlanması için kaç saniye bekleneceğini belirtir.varsayılan değer 30 sn. Komut işlenmeye başlandıktan sonra işlem 100 saniyede olsa timeout (belirlenen zamanın dışına çıkmak demek) hatası olmaz Dim cmd As New SqlCommand("select * from yazarkitap") cmd.connection = baglan cmd.commandtimeout = 50
Command nesnesinin hangi sqlconnection nesnesi üzerinden çalışacağını gösterir.
I- cmd.executenonquery() herhangi bir kayıt döndürmeyen,sorgulama amaçlı olmayan komutlar çalıştırılır.(update,insert,delete gibi) Metodun geri dönüş değeri,komut çalıştırıldığında etkilenen kayıt sayısıdır. 1 row(s) efected
II- cmd.executescalar() istenen sorgunun sonucundaki ilk kaydın ilk kolonunu getirir.diğer satır ve sütunlar görmezden gelinir.sonucun tek bir kolon olduğu durumlarda etkilidir. Dönüş değeri,string de integer de olabilir
III- cmd.executereader () istenen sorgunun tüm sonucunu döndürür. Geri dönüş değeri SqlDataReader sınıfından bir nesnedir. Dim dtr As SqlDataReader dtr = cmd.executereader