|
DataAdapter ve
DataSet nesnelerine
form içindeki
prosedürlerden
erişmek istediğimiz
için
modül seviyesinde
tanımlıyoruz.
Dim dap1 As SqlDataAdapter
Dim das1 As DataSet
Sub Populate()
Northwind
veritabanı bağlantısı
Dim cnn1 As SqlClient.SqlConnection = _
New
SqlConnection("Data Source=(local);" & _
"Integrated Security=SSPI;"
& _
"Initial Catalog=northwind")
Yeni bir
DataAdapter nesnesi oluşturuyor
ve
SelectCommand belirtiyoruz
dap1 = New
SqlDataAdapter _
("SELECT ShipperID, CompanyName,
Phone " & _
"FROM Shippers", _
cnn1)
Oluşturduğumuz
DataAdapter nesnesi için
UpdateCommand
özelliğini belirtiyoruz
dap1.UpdateCommand = _
New
SqlCommand _
("UPDATE Shippers "
& _
"SET CompanyName =
@CompanyName, " & _
"Phone = @Phone " &
_
"WHERE ShipperID =
@ShipperID", _
cnn1)
UpdateCommand
özelliğinin kullanacağı iki
parametreyi
oluşturuyoruz
dap1.UpdateCommand.Parameters.Add _
("@CompanyName",
SqlDbType.NVarChar, 40, _
"CompanyName")
dap1.UpdateCommand.Parameters.Add _
("@Phone",
SqlDbType.NVarChar, 24, _
"Phone")
Hangi satırın
güncelleneceğini ShipperID alanına
göre
belirleyeceğiz. Shippers tablosundaki orijinal
ShipperID
değerini kullanıyoruz
Dim prm1 As SqlParameter = _
dap1.UpdateCommand.Parameters.Add _
("@ShipperID",
SqlDbType.Int)
prm1.SourceColumn = "ShipperID"
prm1.SourceVersion =
DataRowVersion.Original
DataAdapter
nesnesinin InsertCommand özelliğinde
bir SQL ifadesi
değil, oluşturduğumuz Stored Procedureu
kullanacağız.
Bu nedenle DataAdapter nesnesinin InsertCommand
özelliğinin
CommandType değerinin CommandType.StoredProcedure
olarak
değiştiriyor ve kullanacağımız SPnin adını belirtiyoruz
dap1.InsertCommand = New SqlCommand("udpInsertANewShipper",
cnn1)
dap1.InsertCommand.CommandType =
CommandType.StoredProcedure
Kullanacağımız
SP için parametreleri belirtiyoruz
dap1.InsertCommand.Parameters.Add _
("@CompanyName",
SqlDbType.NVarChar, 40, _
"CompanyName")
dap1.InsertCommand.Parameters.Add _
("@Phone",
SqlDbType.NVarChar, 24, _
"Phone")
Hangi satırın
güncelleneceğini yine ShipperID
alanına göre
belirliyoruz
Dim prm2 As SqlParameter = _
dap1.InsertCommand.Parameters.Add _
("@Identity",
SqlDbType.Int, 0, "ShipperID")
prm2.Direction = ParameterDirection.Output
DataAdapter
nesnemizin DeleteCommand özelliğine
değer veriyoruz
dap1.DeleteCommand = _
New
SqlCommand("DELETE " & _
"FROM Shippers " & _
"WHERE ShipperID =
@ShipperID", cnn1)
Hangi satırın
silineceğini yine Shippers tablosundaki
ShipperID
alanına göre belirleyeceğiz
DeleteCommand
özelliği için kullanacağımız tek parametre
olan
ShipperIDyi tanımlıyoruz
Dim prm3 As SqlParameter = _
dap1.DeleteCommand.Parameters.Add _
("@ShipperID",
SqlDbType.Int)
prm3.SourceColumn = "ShipperID"
prm3.SourceVersion =
DataRowVersion.Original
Bağlantıyı
açıyoruz
cnn1.Open()
DataAdapter
nesnesini kullanarak
Oluşturduğumuz
DataSet içinde Shippers adlı
DataTablea
verileri aktarıyoruz.
das1 = New
DataSet
dap1.Fill(das1, "Shippers")
DataSet nesnesi
ile çalışmak için
açık bir
bağlantıya ihtiyacımız yok
cnn1.Close()
End Sub
### FORM YÜKLENİYOR
###
Private Sub Form1_Load(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Form
yüklenirken verileri DataSete aktarıyoruz
Populate()
Form üzerindeki
metin kutularını ilgili
alanlara
bağlıyoruz
TextBox1.DataBindings.Add _
(New
Binding("Text", das1, "Shippers.ShipperID"))
TextBox2.DataBindings.Add _
(New Binding("Text",
das1, "Shippers.CompanyName"))
TextBox3.DataBindings.Add _
(New
Binding("Text", das1, "Shippers.Phone"))
textbox1i
read-only hale getiriyoruz
TextBox1.ReadOnly = True
End Sub
### NAVİGASYON BUTONLARI
###
Private Sub Button1_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
İlk kayıda
gidiyoruz
Me.BindingContext(das1,
"Shippers").Position _
= Me.BindingContext(das1,
"Shippers").Position.MinValue
End Sub
Private Sub Button2_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Bir önceki
kayıda gidiyoruz
Me.BindingContext(das1,
"Shippers").Position -= 1
End Sub
Private Sub Button3_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Bir sonraki
kayıda gidiyoruz
Me.BindingContext(das1,
"Shippers").Position += 1
End Sub
Private Sub Button4_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
Son kayıda
gidiyoruz
Me.BindingContext(das1,
"Shippers").Position _
= Me.BindingContext(das1,
"Shippers").Position.MaxValue
End Sub
### GÜNCELLE ###
Private Sub Button5_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button5.Click
DataTable
içinde farklı bir satıra giderek yapılan
değişikliği
geçerli hale getiriyoruz
If Me.BindingContext(das1,
"Shippers").Position = 0 Then
Me.BindingContext(das1,
"Shippers").Position -= 1
Else
Me.BindingContext(das1,
"Shippers").Position -= 1
Me.BindingContext(das1,
"Shippers").Position += 1
End If
DataAdapter
nesnesinin Update metodunu kullanarak
local verileri
veri kaynağı ile güncelliyoruz
dap1.Update(das1, "Shippers")
End Sub
### TEMİZLE VE YENİ
KAYIT EKLE ###
Private Sub Button6_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button6.Click
Eklenen satırı
daha sonradan güncelleyebilmek için
İlk satıra
gidiyoruz
Me.BindingContext(das1,
"Shippers").Position _
= Me.BindingContext(das1,
"Shippers").Position.MinValue
Metin kutuları
için gerçekleştirdiğimiz
veri
bağlantılarını kaldırıyoruz
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox3.DataBindings.Clear()
Metin
kutularını temizliyoruz
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
Artık
uygulamamız yeni veri girişi için hazır durumda
End Sub
Private Sub Button7_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button7.Click
Shippers
DataTableında yeni bir DataRow oluşturuyoruz
ve değerlerini
form üzerindeki metin kutularından alıyoruz
Dim newRow
As DataRow =
das1.Tables("Shippers").NewRow()
newRow("CompanyName") =
TextBox2.Text
newRow("Phone") = TextBox3.Text
das1.Tables("Shippers").Rows.Add(newRow)
Eklenen satırı
veri kaynağında geçerli hale getirmek için
DataAdapter
nesnesinin Update metodunu kullanıyoruz
dap1.Update(das1, "Shippers")
Metin
kutularından kaldırdığımız veri bağlantılarını
yeniden
oluşturuyoruz
TextBox1.DataBindings.Add _
(New
Binding("Text", das1, "Shippers.ShipperID"))
TextBox2.DataBindings.Add _
(New
Binding("Text", das1, "Shippers.CompanyName"))
TextBox3.DataBindings.Add _
(New
Binding("Text", das1, "Shippers.Phone"))
Eklenen son
satırı görüntülemek için DataSet içindeki
Shippers
DataTableının son satırına gidiyoruz
Me.BindingContext(das1,
"Shippers").Position _
= Me.BindingContext(das1,
"Shippers").Position.MaxValue
End Sub
### SİL ###
Private Sub Button8_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles Button8.Click
DataSet
içindeki Shippers tablosuna
dayanan bir
DataView oluşturuyoruz ve
şu anda
bulunulan ShipperID ile eşleşen
row indexini
buluyoruz
Dim dav1 As DataView = _
New
DataView(das1.Tables("Shippers"))
dav1.Sort = "ShipperID"
Dim
rowIndex As Integer
= _
dav1.Find(TextBox1.Text)
Bulunan satırı
silinmek üzere işaretliyoruz
das1.Tables("Shippers").Rows(rowIndex).Delete()
DataAdapter
nesnesinin Update metodunu kullanarak
yaptığımız
işlemi SQL Server üzerinde ve DataSet
üzerindeki
Shippers tablosunda geçerli hale getiriyoruz
dap1.Update(das1, "Shippers")
End Sub |