VB.NET Veritabanı Bağlantısı

Access veri tabanı ile VB.NET bağlama ve Ekle, Düzenle ve Sil İşlemleri yapmayı öğrenelim.

Merhaba arkadaşlar,

Bu dersimizde VB.NET'te veritabanına nasıl bağlanılır, onu öğreneceğiz ve bazı nesnelerin özeliklerini açıklayacağım.

Bağlayacağımız veri tabanı Access 2003 veritabanı; bunun için öncelikle bir veri tabanı oluşturacağız.

Veritabanın ismi 'VERITABANI' olarak ayarlayın yapacağımız programda kodlar bunlara göre ayarlı bir tablo oluşturun ve içersine 'ADI','SOYADI','NUMARA' adında 3 adet Sütun ekleyin ve 'ADI' Metin ,'SOYADI' Metin ,'NUMARA' Sayı olarak ayarlayın ve tabloyu kaydedip adını 'VERI" olarak ayarlayın. Veri tabanıyla işimiz bitti.(Veri tabanına birkaç veri ekleyin programda sıkıntı yaşamayın)

Şimdi Artık VB.NET'e geçelim =)



Şimdi yukarıda gördüğünüz Tasarımı VB.NET'te tasarlayın 1 Adet DataGridView,3 Adet Button,3 Adet Textbox,3 Adet Label

Kod yazmadan önce Veritabanını Proje Klasöründeki Bin/Debug içersine atın siz Release modda çalıştırıyor iseniz Bin/Release Klasörüne atın şimdi. VB.NET açıp


Public Class Form1

yazan kodun üzerine

Imports System.Data.OleDb

komutunu aktaralım aksi takdirde aşağıdaki kodların hiçbiri çalışmayacaktır.

Artık Kod yazmaya başlayalım öncelikle DataGridView nesnesine verileri aktarmakla başlayalım ben ayrı bir yordam oluşturup orada yaptım.(Siz Nesnelerin Eventlarında da yapabilirsiniz.)


Private Sub Listele(ByVal SQL As String)

        Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'")

        Dim veriler As New DataTable("veriler")

        Dim adapter As New OleDbDataAdapter(SQL, baglanti)

        adapter.Fill(veriler)

        DataGridView1.DataSource = veriler

End Sub



Buradaki

(ByVal SQL As String)

bizim SQL yazıp DataGridView'de Göstermemize yarayacak ilerdeki komutlarda nasıl kullanacağını göstereceğim.


Dim baglanti As New OleDbConnection



bölümü Bizim Veritabanımızın Türünü ve nerede olduğu içindir.


Provider=Microsoft.Jet.OLEDB.4.0



Access 2003 tanımlayan Kod


Data Source='VERITABANI.mdb'



burasıda veritabanımızın bulunduğu Dizin.


Dim veriler As New DataTable



burası bizim VB.NET içersinde oluşturduğumuz sanal tablodur.

("veriler")Sanal tablonun ismi.


Dim adapter As New OleDbDataAdapter



bizim veritabanının yeri ve SQL komutunu birleştirip sanal tablomuza aktarmamıza yarayacak bölüm.


adapter.Fill(veriler)



burada artık sanal tablomuza aktardığımız bölüm ve artık verilerimizi program içinde kullanabiliriz.

Son olarak da:


DataGridView1.DataSource = veriler



diyerek artık DataGridView nesnemize aktarıyoruz veri tabanından gelen verileri.

Şimdi bir yordam daha yapcaz buda bizi kod yığıntısından kurtaracak:


Private Sub Temizle()

        TextBox1.Clear()

        TextBox2.Clear()

        TextBox3.Clear()

End Sub



Kodlardan anlayacağınız gibi formumuzun üzerindeki nesneleri temizliyor. Neden Ekle, Düzenleme ve Silme işleminden sonra kullanıcıyı yormamak için.

Artık Formumuzu Çalıştırmadan önce yapılması gereken ayarlar var.bunları Form_Load Event'ına yazcağız.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

Listele("SELECT * FROM VERI'")

End Sub




DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically



bu kod satırı bizi DataGridView nesnesinin hücrelerine tıkladığımızda verileri değişrirebilir (veritabanındakileri değil)
Bunu engellemek için.


DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect



bu kod ise DataGridView nesnesinde hücreleri tek tek seçmek yerine satırı komple seçmek için.

Bu kodları kendiniz isterseniz Properties bölümünden de değiştirebilirsiniz.

'Listele("SELECT * FROM VERI'")' artık hazırladığımız Listele Adındaki Yordamımızı Çalıştırıp ve SQL adındaki değişkenimize SQL aktarıp DataGridView nesnesinde Gösterilmesini Sağladık.Çalıştırdığınızda veritabanındaki veriler gösterilecektir.
Artık Ekle Buttonunu yerleştirelim.

EKLE BUTONU


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim durum As String

        durum = MsgBox("Adı = " & TextBox1.Text & vbNewLine & "Soyadı = " & TextBox2.Text & vbNewLine & "Numara = " & TextBox3.Text & vbNewLine & "Yukarıdaki yazdığınız veriler kayıt edilsinmi '", MsgBoxStyle.Question + MsgBoxStyle.YesNoCancel, "Kayıt Uyarı")

        If durum = vbYes Then

            Dim sql As New String("INSERT INTO VERI (ADI,SOYADI,NUMARA) values ('{0}','{1}',{2})")

            sql = String.Format(sql, TextBox1.Text, TextBox2.Text, TextBox3.Text)

            Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'")

            Dim komutnesnesi As New OleDb.OleDbCommand(sql, baglanti)

            Dim sonuc As Integer

            baglanti.Open()

            sonuc = komutnesnesi.ExecuteNonQuery()

            If sonuc = 1 Then

                MsgBox("Yandaki Girdiğiniz Veriler Veri Tabanına Kayıt Olmuştur.", MsgBoxStyle.Exclamation, "Kayıt Uyarı")

            End If

            Listele("SELECT * FROM VERI'")

            baglanti.Close()

            Temizle()

        Else



        End If



    End Sub



Burası Biraz uzun o yüzden kısaltarak anlatacağım şimdi buradaki bazı kodların anlatcağım dersle ilgisi yok aslında ama öğrenilmesi gerekir.

'Durum' adında bir değişken tanımladım ve bu değişkene 'Msgbox'nesnesinden geri dönen veri aktardım.Mesaj pencerelerinde dikkat ederseniz sadece 'Tamam' buttonu yoktur.Evet,Hayır ve İptal butonları bulunur.

Visual Basic'te bunun için 'MsgboxStyle' kodu bulunmaktadır.Bu kodun altında Mesaj kutusundaki ikonlar ve buttonların şekilleri vardır yukardaki Kodu incelerseniz 'MsgBoxStyle.Question + MsgBoxStyle.YesNoCancel' mesaj kutusunun ikonu 'Question' yani Soru işareti ikonu '+' diyerek Sitilleri devam edip 'YesNoCancel' butonları ekledim esas işimize yarayacak bölümde burası YesNoCancel buradaki butonlara basıldığında geriye bir değer atar basılan buttona göre bu değerler

Yes butonu için : 'VbYes'
No butonu için : 'VbNo'
Cancel buttonu için : 'VbCancel''dır

buna göre de programa yön verdik 'İf' yapısını kullanarak basılan butonu tespit edip ona göre çalışmaya devam ettim.Bizi ilgilediren Kodlara geçelim


Dim sql As New String("INSERT INTO VERI (ADI,SOYADI,NUMARA) values ('{0}','{1}',{2})")



Burdaki kodda Ekleme yapmak için SQL var ama Farklı bir yolu var SQL'de ''{0}','{1}',{2}' parametre verdik bu parametreler aşağıdaki koda göre çalışır.


sql = String.Format(sql, TextBox1.Text, TextBox2.Text, TextBox3.Text)



Bu kodda parametre sırasıyla çalışır.buna göre SQL deyimimiz çalışacaktır.(parametreler sizin istediğiniz gibi eklenebilir parametrelere karşılık gelecek bir veri olması lazım ekleyeceğiniz parametreye)

Şimdi artık esas ekleme kodlarına gelelim
'baglanti' değişkenimiz gene aynı ama burada adapter nesnesi yok onun yerine 'Dim komutnesnesi As New OleDb.OleDbCommand' Command nesnesi var bu nesne bizim veri tabanında ekleme ve düzenleme gibi değişiklikleri sağlayacak nesnedir.şimdi ekleme işlemine başlamamız için veritabanının içine girmemiz gerekir bunun içinde 'Baglanti.Open()' kodunu kullanıyoruz.

Açtıktan sonra nesnemizi çalıştırıyoruz.' sonuc = komutnesnesi.ExecuteNonQuery()'
'ExecuteNonQuery()' çalıştırmamızı sağlayan kod artık çalıtırdık ama çalıştırma sonucu geriye bir değer atıyor '1' ise veriler veritabanına işlenmiştir '0' ise işlenmemiş anlamındadır.buna göre son olarak onu kontrol edip 'baglanti' nesnesini kapatıp ekleme işlemini bitiriyoruz.'baglanti.Close()'

başta hazırladığımız yordamları burada kullanıyoruz.'Temizle' ve 'Listele' yordamlarını temizleyi çalıştırdığımızda form üzerindeki nesneler boşalıcaktır.'Listeleyi'çalıştırdığımızda ise son eklediğimiz veriyi en altta görüceğiz.

Bundan sonraki kodlar kolay sadece SQL deyimlerini değiştirmemiz yeterli olucak.

Şimdi düzenleme işlemini yapabilmek için önce hangi veriler olduğunu seçmemiz gerekecektir bunu sağlamak için DataGridView Nesnesinin CellClick event'ına kod yazacağız.


Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

        TextBox1.Text = DataGridView1.CurrentRow.Cells(0).Value

        TextBox2.Text = DataGridView1.CurrentRow.Cells(1).Value

        TextBox3.Text = DataGridView1.CurrentRow.Cells(2).Value

    End Sub



'DataGridView1.CurrentRow.Cells(0).Value' bu kodun anlamı seçili satırın 0. Hücresinin değeri.

Bunları hazırladığımız formdaki metin kutularına aktardık buna göre düzenleme işlemini yapacağız.

DÜZENLE BUTONU


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim sql As New String("UPDATE VERI SET ADI='{0}',SOYADI='{1}',NUMARA={2} WHERE ADI='{3}' AND SOYADI='{4}' AND NUMARA={5}")

        sql = String.Format(sql, TextBox1.Text, TextBox2.Text, TextBox3.Text, DataGridView1.CurrentRow.Cells(0).Value, DataGridView1.CurrentRow.Cells(1).Value, DataGridView1.CurrentRow.Cells(2).Value)

        Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'")

        Dim komutnesnesi As New OleDb.OleDbCommand(sql, baglanti)

        Dim sonuc As Integer

        baglanti.Open()

        sonuc = komutnesnesi.ExecuteNonQuery()

        If sonuc = 1 Then

            MsgBox("Değiştirmiş Olduğunuz Veriler Güncellenmiştir.", MsgBoxStyle.Exclamation, "Kayıt Uyarı")



        End If

        Listele("SELECT * FROM VERI'")

        baglanti.Close()

        Temizle()

    End Sub



Burada anlatılıcak başka kod yok oyüzden direk olarak Sil butonunun kodlarını yazıcağım.

SİL BUTONU


Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim sql As New String("DELETE FROM VERI WHERE ADI='{0}' AND SOYADI='{1}' AND NUMARA={2} ")

        sql = String.Format(sql, TextBox1.Text, TextBox2.Text, TextBox3.Text)

        Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'")

        Dim komutnesnesi As New OleDb.OleDbCommand(sql, baglanti)

        Dim sonuc As Integer

        baglanti.Open()

        sonuc = komutnesnesi.ExecuteNonQuery()

        If sonuc = 1 Then

            MsgBox("Listeden Seçmiş Olduğunuz Veri Silinmiştir.", MsgBoxStyle.Exclamation, "Kayıt Uyarı")

           

        End If

        Listele("SELECT * FROM VERI'")

        baglanti.Close()

        Temizle()

    End Sub




Anlatacaklarım bu kadar, umarım yaralı olmuştur. Siz artık kendinize göre düzenlersiniz verileri.
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

sezer abi '''sonuc = komutnesnesi.ExecuteNonQuery()satırında '''INSERT INTO deyimi, bilinmeyen alan adı içeriyor: 'ADI'. Adı doğru yazdığınızdan emin olun ve işlemi yeniden deneyin.''' hatsını veriyor abi 'VERİTABANI' isminde veri tabanını ve 'VERİ' isminde tablo oluşturdum. ADI , SOYADI, NUMARA isminde 3 adet sutun oluşturdum. bir çok defa kontrol ettim (yaklaşık 3 saatir) hep aynı hatayı veriyor. Önce tek tek yazdım (pratik olması bakımından) sonra kopyala yapıştır yaptım yine olmadı. son 3 aydır veri tabanı ögrenmeye çalışıyorum abi bildigin bir kitap ismi falan varsa lütfen..
Kaynak dosyayı indirip baktınmı oradan,birde yazılan kodlarda hata yok ama ekleme ve duzenlede ' su ısaret sayı verılerınde olmayacak haberın olsun sadece access te metın olarak ayarladıgın alanlarda ' ısaretı olucak,senın hatanı bulabılmem ıcın ozelden veya baska turlu kodun tamamını yolla oyle bakım
hata sizde degil büyük ihtimal bende. İnternette o kadar çok gezdim veri tabanı baglantısını ögrenmek için en çok sizin bu anlatımınızdan faydalana bildim, eline saglık ilgine ve emegine teşekkürler. Deneme yanılma yolu ile bu hatayı bulucam bulunca nerede hata yaptıgımı bildiririm. :) Ayrıca sanal kurs a yeni katıldım. sitenin kullanımı hakkıdada pek bilgim yok
İlginiz için Teşekkür ederim yardımcı olduysam ne mutlu bana
hatayı ertesi gün buldumda anca yazabiliyorum:) gülmekten öldüm. indirdigim acses inglizce versiyondu:) türkçe ingilizce karekter meselesi:) mesele türkçenin karakteri degilde, sorun ingilizcenin karekteri esen kal...
link ölmüş
Link Düzeltildi.
Link ölmüş be abi tekrar yüklermisin
adapter.Fill(veriler) satırında aşağıdaki hatayı veriyor 'Microsoft.Jet.OLEDB.12.0' sağlayıcısı yerel makine kayıtlı değil. diyor Veritabanını access 2007'de yaptım abi nasıl düzelteceğim
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:veritabani1.accdb;Persist Security Info=False Bu kodu bir dene ama senın işletim sistemininde 64 bitmi veya 32bitmi olduğuda onemlidir buna dikkat et eğer 64 bit ise Project Propertiesden Build Sekmesinden Platform Target seçeneğini x86 yap eğer olmassa accessdeki kaydedeceğin dosyayı 2003 fotmatında kaydet illa 2007 kaydetmen şart değil.
hocam dersiniz çok açıklayı cı olmuş saolun ben yunus.............l:gul::gul:
Slm arkadaşlar vb.nette veritabanı baglantısı yapınca dataadapter ile baglantı kururken generate select statement generate insert statement generate table mappings generate update statement generate delete statement gibi bişiler çıkıyor fakat ben yaptıgımda sadece generate select statement generate insert statement generate table mappings şunlar çıktıgından projeme veri ekleyip silemiyorum yardımcı olursanız çok sevinirim
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'") ben sql veri tabanı kullanıyorumda buradaki provider den sonrasına ne yazacağımmı bilmiyorum acele yardımcı olur musunuz ?
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:veritabani1.accdb;Persist Security Info=False BU KODU NEREYE YAZACAÐIM
çok özür dilerim siz çok güzel anlatmışsınız ama ben anlamadım :( deneme yanılma yoluyla ekle butonunu tam çalışır halde yaptım ama diğer butonları yapamadım .parametre sorunu diyo sonra söz dizim hatası diyo anlamdım bi şey lütfen yardım edermisiniz.çok acill
sanal kurs ta yeniyim kaynak dosyaya ulaşamadım.nasıl ulaşbilirim?
Forumdan ulaşırsanız daha cok yardımcı olabılırım.
link çalışmıyor acaba yeniden ayarlarmısınızx?
tmm hallettim çok teskür :)
Hocam kaynak dosyalar silinmiş.Yenileyebilirmisiniz?
Kaynak Dosyasına Ulaşamıyorum Nasıl Ulaşabılırım ?
Abi klaynak dosyasını düzeltir misin?Hata verio
Eğer VB.net 2010 da çalışıyorsanız "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'" satırında "Jet" yerine "ACE" "4" yerine "12" "mdb" yerinede "accdb" yazmanız gerekir. Ayrıca 2010 {} işaretlerini tanımıyor. bunları kaldırmanız gerekiyor.
accessde değişiklik yaptığımızda burayada anında yansırmı ?
abicim ellerin dert görmesin çok iyi anlatmışsın kaç aydır uraşıorum şu veritabanını öğrenmek için girmediğim site kalmadı en sonunda burada ilacımı buldum çok teşekkür ederim ellerine sağlık bnde hepsi çalışıor ekleme düzenleme silme hepsi çok teşekkür ederim az çok anladım senn sayende.....
vb de daha yeniyim,,,ve anlamadım...resimli anlatım olsaydı daha iyi olurdu... (anlatmak yerine kaynak dosyası linkini yenileseniz de olurr) lütfen yardımlarınızı bekliyorum...
şu baştaki "yordam" işini de anlamadım. :(
Private Sub Listele(ByVal SQL As String) Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='VERITABANI.mdb'") Dim veriler As New DataTable("veriler") Dim adapter As New OleDbDataAdapter(SQL, baglanti) adapter.Fill(veriler) DataGridView1.DataSource = veriler End Sub burayı nereye yazcaz anlamadım...lütfen yardımcı olabilecek birileri varmı.
Dim komut1 As New ADODB.Command komut1.CommandText = "insert into siparisler(musterino,ad) values('" & "frm.musterino" & "','" & "frm.ad" & ") " ya bir sorunum var ben data gridin herhangi bir sütününa basınca o kayıtları başka forma eklemesini ve eklediğim formdan veri tabanına çeymeyi uğraştım ılmadı
Hocam her öğrenci için ayrı bir notlarını yazıcağım ver tabanın nasıl bağlarım
link çalışmıyor acaba kaynak kodunu yenileyebilirmisiniz sanalkursa teşekkürler
kardes bu link ölmüş ya bi el atında duzeltın mıllet sızden yardım beklıyo...
bi link düzeltmek bu kadar mı zor...
seçim yapılmadığı zaman sql söz dizimi hatasını da if yöntemi ile giderdim
Ben SQL server veritabanını kullanıyorum bunun için hangi kodları kullanmam gerekiyor
Server'a bağlantı kurup SQL veritabanına yüklü olan TİGER LOGO programının tablolarını çekecem. Yeni bir kayıt açıldığında ekrana bildiri versin istiyorum ve her dk bu işlemi kontrol etmesini istiyorum fakat bir türlü ne bağlantı sağlayabildim ne de geri kalan işlemleri yapabildim. Adminlerimizden Ricam bana yardımcı olabilirler mi lütfen ?

Yukarı Git