0% found this document useful (0 votes)
5 views8 pages

ADO2 X

DFMÖSDÇFSDF

Uploaded by

mustafa507607
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views8 pages

ADO2 X

DFMÖSDÇFSDF

Uploaded by

mustafa507607
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

SqlCommand

Uygulama ile SQL Server arasında sql komut cümlelerinin, saklı yordam (stored procedure)
isimlerinin, gerekli parametre isimleri ve değerlerinin taşınmasını sağlayan sınıftır. Taşıdığı
sql komut cümlesini ya da çağıracağı saklı yordamın ismini, SQL Server tarafında yürütme ve
çıkan sonuçları ya da etkilenen kayıt sayısını geriye gönderme özelliklerine de sahiptir.
SqlCommand sınıfının en sık kullanılan özellik ve metodları aşağıda kısaca incelenmektedir.

CommandText Parametreli ya da parametresiz sql cümlelerinin, parametre bekleyen ya da


beklemeyen saklı yordam isimlerinin atanabileceği özelliktir.

CommandType CommandText özelliğinde belirtilen string ifadenin, saklı yordam olarak mı


yoksa, Text ifade olarak mı değerlendirileceğini belirten özelliktir.

Varsayılan olarak Text değerine sahiptir. Ancak saklı yordam (stored


procedure) olarak kullanılacaksa; özellikle belirtilmesi gerekmektedir.

Connection SqlCommand nesnesinin içerdiği sorguların hangi sunucu ve veritabanında


çalıştırılması gerektiği ile ilgili bağlantı nesnesini tutan özelliktir.

ExecuteNonQuery() Yazılan sql cümlesi ya da SQL Server tarafındaki saklı yordamın (strored
procedure) çalıştırılması ve bu işlem ya da işlemler sonucunda etkilenen
kayıt sayısının geriye alınabilmesini sağlayan metottur.

Ancak burada dikkat edilmesi gereken nokta; geriye sadece tamsayı tipinde
bir değer dönmesidir. Bu nedenle, genellikle veritabanına değer
gönderirken yani, insert, update ve delete işlemleri için kullanılır.
Sonrasında da bu işlemlerden etkilenen kayıt sayısı geriye alınmaktadır.
Böylece örneğin güncellenen satır sayısı elde edilip kullanılabilir.

ExecuteScalar() ExecuteNonQuery metodu gibi, yazılan sql cümleleri veya saklı yordamları
çalıştırmak için kullanılır. Bu metodun farklı olduğu nokta ise; geriye sadece
tek bir object tipinde sonuç dönen sorgular için kullanılmasıdır.

Bu metotla, select işleminden dönecek olan scalar kayıtlar alınabilmektedir.


Örneğin gruplama fonksiyonları içeren sorgu cümlelerinin sonuçlarını elde
etmekte kullanılabilir.

ExecuteXmlReader() Sadece SqlCommand sınıfında (class) bulunan bu metot; SQL Server


üzerinden gelen verinin, XML (eXtensible Markup Language) formatında
alınabilmesini sağlar.

ExecuteReader() Geriye veri ya da veri blokları dönen sql cümleleri veya saklı yordamları
çalıştıran ve bunların sonuçlarının uygulama tarafına alınabilmesini sağlayan
metottur.

Bu metot ile uygulama tarafına gelecek sonuçlar, DataReader adı verilen ve


veri sağlayıcıya (data provider) göre değişen bir tip yardımıyla
okunabilmektedir. Özellikle içeriği çok fazla değişmeyen ve az sayıda satır
içeren veri kümelerinin uygulama ortamına daha hızlı bir şekilde
alınabilmesini sağlayan modellerde tercih edilmektedir.

Sayfa 1 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

DBCOMMAND NESNESİNİN YÜRÜTÜLMESİ

EXECUTENONQUERY

İnsert, update ve delete gibi geriye herhangi bir değer döndürmeyen (kayıt olarak) işlemler
için kullanılır. Bu işlem geriye kaç kaydın etkilendiğini gösteren int türünde değer döndürür.

Örnek: MuşteriId sütunu 3 olan satırın adsoyad sütunu “Fatma Güneş” olarak güncellensin.

Imports [Link]

Public Class Form1


Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "update musteri set adsoyad='Halil Güneş' where
MusteriId=3"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim kayitsayisi As Integer = [Link]
[Link]()
If kayitsayisi > 0 Then
MsgBox([Link] & " kayıt güncellendi.")
Else
MsgBox("Güncelleme başarısız oldu")

Sayfa 2 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
End If
End Sub

End Class

EXECUTESCALAR()
Tek alanlı değer döndüren sorgular için tercih edilir. Geriye object türünde değer döndürür.
Örneğin grupsal fonksiyonların sonuçları için bu yordam tercih edilebilir.

Örnek: müşteri tablosunda kaç kaydın olduğu sorgulayalım

Imports [Link]

Public Class Form1


Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select count(*) from musteri"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim kayitsayisi As Integer = CInt([Link]())
[Link]()

MsgBox(" tabloda " & [Link] & " kayıt bulunuyor.")

End Sub

End Class

EXECUTEXMLREADER
Veritabanı sunucusundan çekilmiş XML formatındaki içeriği [Link] sınıfı
türündeki bir değişkene aktarır. XmlReader sınıfı XML formatındaki veriyi ileri yönlü hızlı
bir şekilde okumak için kullanılır. SQL sunucu tarafında veriyi XML formatında döndürmek
için “FOR XML” ifadesi kullanılır.

Örnek:

Veri tabanından verileri XML formatında alıp listbox’ta listeleyelim.

Sayfa 3 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New sqlconnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select MusteriId,adsoyad from musteri for xml
auto,xmldata"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim oxm As [Link] = [Link]
Dim ods As New DataSet
[Link](oxm, [Link])
[Link]()
[Link]()

[Link]("Müşteri İd" & Chr(9) & Chr(9) & "AdSoyad")

[Link]("_____________" & Chr(9) & "_____________")


For Each odr As DataRow In [Link](0).Rows
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next

End Sub
End Class

For each döngüsü yerine for next döngüsünü kullanmak istersek aşağıdaki kodları yazabiliriz.

Dim odr As DataRow

Sayfa 4 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

For i As Integer = 0 To 2
odr = [Link](0).Rows(i)
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next

Veya count fonksiyonu ile önce kayıt sayısını hesaplayabiliriz.

Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select count(*) from musteri"
Dim ocmd2 As New SqlCommand(sql, ocnn)
[Link]()
Dim kayitsayisi As Integer = CInt([Link]())
[Link]()

MsgBox(" tabloda " & [Link] & " kayıt bulunuyor.")

sql = "select MusteriId,adsoyad from musteri for xml auto,xmldata"


Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
Dim oxm As [Link] = [Link]
Dim ods As New DataSet
[Link](oxm, [Link])
[Link]()
[Link]()

[Link]("Müşteri İd" & Chr(9) & "AdSoyad")

[Link]("_____________" & Chr(9) & "_____________")


Dim odr As DataRow

For i As Integer = 0 To kayitsayisi - 1

odr = [Link](0).Rows(i)
[Link](odr("MusteriId") & Chr(9) & Chr(9) & odr("adsoyad"))
Next

End Sub
End Class

DbDataReader Nesnesi

DataReader herhangi bir anda sadece bir satırlık kayda erişim imkanı veren, yalnızca
okunabilir (read only) ve yalnızda ileri yönlü (forward only) erişimi destekleyen bir yapı

Sayfa 5 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

sunar. Bu özellikleri ile sadece okuma ve listeleme amaçlı küçük veri setleri üzerinde
kullanılması tavsiye edilmektedir. Veriler serverin belleğinde tutulur. Bu nedenle büyük veri
kümeleri üzerinde DataReader ile çalışmak performans açısından olumsuz sonuç doğurur

DataReader ile bilgileri okurken veritabanı bağlantımızın sürekli açık kalır. DataReader ile
işimiz bittiğinde derhal DataReader i ve Connection'ı kapatmalıyız.

Aşağıda DataReader ile veritabanından veri okuma ile ilgili şekil durumu özetlemektedir.

Veritabanı connection command DataReader

Sorgu, yürütüldüğü zaman veri kaynağı tarafındaki ilk satır DataReader nesnesine gönderilir.
Bu arada sonraki kaydın okunması ve taşınması amacıyla bağlantı açık kalır. DataReader
nesnesini döngüye sokarak, her defasında bir adım ilerlemesini sağlarız.

DataReader nesnesi veritabanı türlerine göre hazırlanmış isim uzaylarında bulunur. En çok
kullanılan DataReader türleri şunlardır.

 [Link]
 [Link]
 [Link]
 [Link]

DataReader içindeki kayıtları okumak için, Get ile başlayan sütun seçici yordamlar
kullanılabildiği gibi, sütun indisi veya adı kullanılabilir.

‘sütuna ait indis


[Link](oRdr(1))
‘sütunun adı ile
[Link](oRdr(“adsoyad”))
‘getvalue ile
[Link]([Link](1))
‘string türünde değer döndüren getstring ile
[Link]([Link](1))

Veritabanındaki bir sonraki kaydı DataReader nesnesine aktarmak için nesnenin Read
yordamı kullanılır. Bu yordam false değer döndürürse okunacak kaydın olmadığı anlamına
gelir. DataReader kayıtlarını listelemek için bu yordam aracılığıyla döngü kurulur. Yordam
True değerini döndürdüğü sürece döngüye girilir.

Sayfa 6 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ

örnek

Imports [Link]
Public Class Form1
Dim cnnstr As String = "server=DESKTOP-
6PHSFB3\SQLEXPRESS;database=deneme1;integrated security=true;"
Dim ocnn As New sqlconnection(cnnstr)

Private Sub Button1_Click(ByVal sender As [Link], ByVal e As


[Link]) Handles [Link]
Dim sql As String = "select * from musteri"
Dim ocmd As New SqlCommand(sql, ocnn)
[Link]()
'datareader nesnesin tanımlayalım
Dim ordr As SqlDataReader = [Link]

While [Link]
[Link](ordr("adsoyad"))
End While
[Link]()

[Link]()

End Sub
End Class

Sayfa 7 / 8
VERİ VE VERİYE ERİŞİM TEKNOLOJİLERİ
Imports System
Imports [Link]
Public Class Form1

Dim cnnstr As String =


"server=(localdb)\MSSQLLocalDB;database=deneme325;integrated security=true;"

Dim ocnn As New SqlConnection(cnnstr)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles


[Link]

Dim sql As String = "select * from musteri"


Dim ocmd As New SqlCommand(Sql, ocnn)
[Link]()
'datareader nesnesin tanımlayalım
Dim ordr As SqlDataReader = [Link]

While [Link]
[Link](ordr("adsoyad"))
End While
[Link]()

[Link]()

End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles [Link]

End Sub
End Class

Sayfa 8 / 8

You might also like