VB.Net Örnek Uygulamalar 2 Kasım 2011 VERİTABANI UYGULAMALARI HAKKINDA ÖZET BİLGİ VB.Net uygulamasından bir Access veritabanına nasıl bağlanırım? Bunun için ilk yapmamız gereken, bir bağlantı cümlesi kurmaktır. Aşağıda iki farklı durum için örnekler verilmiştir: Dim baglanti_metni1, baglanti_metni2 As String baglanti_metni1 = "Provider=Microsoft.ACE.OLEDB.12.0; DataSource=|DataDirectory|\vt1.accdb; Persist Security Info=False;" baglanti_metni2 = "Provider=Microsoft.Jet.OLEDB.4.0; DataSource=|DataDirectory|\vt1.mdb; Persist Security Info=False;" İlk cümlede (baglanti_metni1) bağlanılan veritabanı dosyası Access 2007 sürümüne aittir. Dolayısıyla accdb formatındadır. İkinci cümlede ise (baglanti_metni2) bağlanılan veritabanı dosyası Access 2003 sürümüne ait bir mdb dosyasıdır. Bu cümlelerden uygun olanı seçilerek bağlantı kurulur: Dim baglanti1 As New Data.OleDb.OleDbConnection(baglanti_metni2) baglanti1.Open() Bağlandığım veritabanında bir tabloya nasıl veri girebilirim? Öncelikle buna uygun bir SQL cümlesi oluşturmamız gerekir: sql1 = "insert into anatablo (numarasi, adi, soyadi, fakultesi, bolumu) values (10909299, ‘Salih’, ‘Baran’, ‘Eğitim Bilimleri’, ‘BÖTE’)" İkinci olarak, bu SQL cümlesi ve daha önce tanımladığımız bağlantı (baglanti1) kullanılarak bir komut tanımlanması ve bu komutun çalıştırılması gerekir: Dim komut1 As New System.Data.OleDb.OleDbCommand(sql1, baglanti1) komut1.ExecuteNonQuery() Ve artık bilgiler veritabanımızın anatablo isimli tablosunda… Bağlantımızı kapatabiliriz: baglanti1.Close() Peki ya bilgileri form üzerinden almak istersem? Yukarıdaki kodlarda yapacağımız tek değişiklik, SQL cümlesinde olacaktır: sql1 = "insert into anatablo (numarasi, adi, soyadi, fakultesi, bolumu) values (“ & TxtNumara.Text & “,‘” & TxtAd.Text & “’,‘” & TxtSoyad.Text & “’,‘” & TxtFakulte.Text & “’,‘” & TxtBolum.Text “’)" Tolga GÜYER Sayfa 75 VB.Net Örnek Uygulamalar 2 Kasım 2011 Veritabanındaki bir tablodan nasıl veri çekebilirim? Daha önce tanımladığımız bağlantımızı açarak başlayalım: baglanti1.Open() Şimdi bu bağlantı üzerinden şu SQL cümlesini çalıştıracağız: sql2 = “select * from anatablo” Dim komut1 As New System.Data.OleDb.OleDbCommand(sql2, baglanti1) Şimdi bu komut üzerinden yeni bir nesne olan veri okuyucuyu çalıştıracağız: Dim veri_okuyucu As Data.OleDb.OleDbDataReader veri_okuyucu = komut.ExecuteReader Artık anatablo içindeki veriler veri_okuyucu nesnesi içersinde. Son olarak bu nesnenin içerdiği bilgilerin nasıl görüntülenebileceğine bakalım: While (veri_okuyucu.Read()) LstBilgiler.Items.Add(veri_okuyucu("numarasi") & “ “ & veri_okuyucu("adi") & “ “ & veri_okuyucu("soyadi")) End While Ve bağlantımızı kapatalım: baglanti1.Close() Ya sadece belirli alanları çekmek İstersem? Sadece SQL cümlemizde değişiklik yapacağız: sql2 = “select numarasi, adi, soyadi from anatablo” Peki “soyadı A harfi ile başlayan” gibi bir koşul koymak istersem? Yine SQL cümlemizi değiştirmek yeterli olacaktır: sql2 = “select numarasi, adi, soyadi from anatablo where adi like ‘A%’” Veritabanındaki bir tablonun istediğim bir kaydını nasıl güncellerim? Öncelikle şu SQL cümlesinin oluşturulması gerekir: sql1 = "update anatablo set adi=’“ & TxtAd.Text & “’,soyadi=’” & TxtSoyad.Text & “’ where numarasi=" & TxtNumara.Text Bundan sonraki adım, kayıt ekleme ile aynı olacaktır: Dim komut1 As New System.Data.OleDb.OleDbCommand(sql1, baglanti1) komut1.ExecuteNonQuery() Bağlantımızı kapatabiliriz: baglanti1.Close() Tolga GÜYER Sayfa 76 VB.Net Örnek Uygulamalar 2 Kasım 2011 Veritabanındaki bir tablonun istediğim bir kaydını nasıl silebilirim? Öncelikle SQL cümlemizi yazalım: sql1 = "delete from anatablo where numarasi=" & TxtNumara.Text Bundan sonraki adım, kayıt ekleme ve güncelleme ile aynı olacaktır: Dim komut1 As New System.Data.OleDb.OleDbCommand(sql1, baglanti1) komut1.ExecuteNonQuery() Bağlantımızı kapatabiliriz: baglanti1.Close() Tolga GÜYER Sayfa 77 VB.Net Örnek Uygulamalar 2 Kasım 2011 Uygulama No: 41 – Veritabanı Uygulaması 7 Açıklama : Veritabanı bağlantılı Dinamik ComboBox kullanımı Ekran Görüntüsü Açıklamalı Kodlar Public Class Form1 Dim baglanti As New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\ogrenci.mdb; Persist Security Info=False;") Dim flag As Byte Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load baglanti.Open() Dim sql As String ‘ Fakülteler form yüklenirken veritabanından gelsin sql = "select fakulte from fakulte_bolum group by fakulte" ‘group by kullanılıyor çünkü fakülte adları fakulte_bolum tablosunda tekrar ediyor. Dim komut As New System.Data.OleDb.OleDbCommand(sql, baglanti) Dim veri_okuyucu As Data.OleDb.OleDbDataReader veri_okuyucu = komut.ExecuteReader While (veri_okuyucu.Read()) CmbFakulte.Items.Add(veri_okuyucu("Fakulte")) End While baglanti.Close() End Sub Private Sub CmbFakulte_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tolga GÜYER Sayfa 78 VB.Net Örnek Uygulamalar 2 Kasım 2011 CmbFakulte.SelectedIndexChanged If flag = 0 Then baglanti.Open() CmbBolum.Items.Clear() CmbBolum.Text = "SEÇİNİZ" Dim sql As String sql = "select Bolum from fakulte_bolum where fakulte = '" & CmbFakulte.Text & "'" Dim komut As New System.Data.OleDb.OleDbCommand(sql, baglanti) Dim veri_okuyucu As Data.OleDb.OleDbDataReader veri_okuyucu = komut.ExecuteReader ‘Veritabanından seçilen fakülte altında yer alan bölümler çekiliyor While (veri_okuyucu.Read()) CmbBolum.Items.Add(veri_okuyucu("bolum")) End While If flag = 0 Then baglanti.Close() End Sub Private Sub BtnBilgiGetir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBilgiGetir.Click flag = 1 baglanti.Open() Dim sql As String sql = "select * from ana_tablo where Ogrencino = '" & TxtOgrenciNo.Text & "'" Dim komut As New System.Data.OleDb.OleDbCommand(sql, baglanti) Dim veri_okuyucu1 As Data.OleDb.OleDbDataReader veri_okuyucu1 = komut.ExecuteReader If Not veri_okuyucu1.HasRows Then ‘ Eğer veri okuyucu boş dönmüş ise… MsgBox("Bu bilgiyi içeren herhangi bir kayıt bulunamadı...") Else While (veri_okuyucu1.Read()) TextAd.Text = veri_okuyucu1("adi") TextSoyad.Text = veri_okuyucu1("soyadi") TextBabaAd.Text = veri_okuyucu1("babaadi") TextGun.Text = veri_okuyucu1("gun") TextAy.Text = veri_okuyucu1("ay") TextYil.Text = veri_okuyucu1("yil") CmbFakulte.SelectedItem = veri_okuyucu1("fakulte") CmbBolum.SelectedItem = veri_okuyucu1("bolum") End While End If baglanti.Close() flag = 0 End Sub Private Sub BtnKaydet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnKaydet.Click baglanti.Open() Dim sql As String If CmbFakulte.Text = "SEÇİNİZ" Then MsgBox("Fakülte Seçiniz!") ElseIf CmbBolum.Text = "SEÇİNİZ" Then MsgBox("Bölüm Seçiniz!") Else sql = "update ana_tablo set fakulte = '" & CmbFakulte.Text & "', bolum='" & CmbBolum.Text & "',adi = '" & TextAd.Text & "',soyadi='" & TextSoyad.Text & "',babaadi = '" & TextBabaAd.Text & "',gun=" & TextGun.Text & ",ay=" & TextAy.Text & ",yil=" & TextYil.Text & " where Tolga GÜYER Sayfa 79 VB.Net Örnek Uygulamalar 2 Kasım 2011 ogrencino = '" & TxtOgrenciNo.Text & "'" Dim komut As New System.Data.OleDb.OleDbCommand(sql, baglanti) komut.ExecuteNonQuery() ‘Veritabanında ana_tablo üzerinde düzeltme yapıldı. MsgBox("Bilgiler Veritabanında Güncellenmiştir.") End If baglanti.Close() End Sub End Class Tolga GÜYER Sayfa 80