Asp.Net Veri Tabanı İşlemleri – Listeleme

Tarih : 03 Ekim 2009 by admin

Asp.Net’in bundan önceki iki dersindeki ön hazırlıktan sonra veri tabanına bağlanma sırası geldi.  Bu derste şimdiye kadar yazdığımız kodlardan biraz daha fazla kod yazacağız.

Kodları yazarken karşımıza yeni kavramlar çıkacak. Bunlarında açıklamasını örneklerle beraber vereceğiz. Veritabanı kodlarına geçmeden önce bir veritabanı oluşturalım. Önceki derslerimizde veritabanı oluşturmadan bahsetmiştik. Veritabanımızın ismi data.mdb , bu veritabanının içinde de uyeler adında bir tablo ve bu tabloda da ad,soyad,kullaniciadi,sifre,mail alanları olsun. Veri tabanımızı oluşturduktan sonra kodlara geçebiliriz.Kodları ilk olarak tamamen verip daha sonra tek tek açıklamak istiyorum. Biraz gözünüz korkabilir fakat açıklamaları dikkatle okursanız zor olmadığını göreceksiniz.

<%@ Import Namespace=”System.data” %>
<%@ Import Namespace=”System.data.oledb” %>
<script runat=”server”>
Sub Page_Load(Src As Object, E As EventArgs)
Dim sorgu as new OleDbCommand
Dim baglanti As New OleDbConnection
Dim veriler As OleDbDataReader
baglanti.ConnectionString = “Provider=Microsoft.jet.oledb.4.0;data source=” & Server.MapPath(“data.mdb”)
baglanti.Open()
sorgu.Connection = baglanti
sorgu.CommandText = “select * from uyeler”
veriler=sorgu.executereader()
While veriler.Read()
Response.Write(“ADI:” & veriler(“ad”) & “</br>”)
Response.Write(“SOYADI:” & veriler(“soyad”) & “</br>”)
Response.Write(“KULLANICI ADI:” & veriler(“kullaniciadi”) & “</br>”)
Response.Write(“ŞİFRE:” & veriler(“sifre”) & “</br>”)
Response.Write(“E MAİL:” & veriler(“mail”) & “</br>”)
Response.Write(“<p></p>”)
end while
baglanti.Close()
end sub
</script>

Tüm bu kodları not defterine yazıp baglanti.aspx ismiyle kaydedin ve localhostta çalıştırın. Tabi baglanti.aspx dosyatası ile data.mdb yani veritabanımız aynı dizinde olacak. Açıklamaları okumadan önce kodları çalıştırıp sonucu görürseniz daha iyi olacaktır. Kodları localhostta nasıl çalıştıracağımızı şu dersimizde anlatmıştık. Şimdi yazdığımız kodları satır satır açıklayalım.

Asp.Net ‘ te veri tabanına bağlantı yapmak için bazı kütüphaneler ve bu kütüphane içindeki nesneler kullanılır.  Doğal olarak  kodlarımızın en başında bu kütüphaneleri sayfaya dahil etmemiz gerekir. Dahil etme işlemini aşağıdaki tanımlamalarla yapıyoruz.( import=dahil etmek. Namspace=Ad alanı)

<%@ Import Namespace=”System.data” %> Bu tanımlamada genel veri tabanı kütüphanesini dahil ediyoruz.
<%@ Import Namespace=”System.data.oledb” %> Bu tanımlamada ise sadece access veri tabanı için kullanılacak kütüphaneleri ekliyoruz. Oledb Access veri tabanını belirtir. Eğer MSSQL veritabanına bağlanıyor olsaydık Oledb yerine Sqlclient yazmamız gerekecekti.

Kodlarımız sayfa yüklendiğinde çalışacağı için kodları

<script runat=”server”>
Sub Page_Load(Src As Object, E As EventArgs)

End sub
</script>

alt programı içine yazıyoruz. Alt program içine kodları yazmadan önce kullancağımız nesneleri ve değişkenleri en başta tanımlıyoruz.

Dim baglanti As New OleDbConnection : Bu kod satırında; veritabanına bağlanmamızı sağlayan OledbConnection nesnesinden yeni bir tane tanımladık ve ismine baglanti dedik. Artık veritabanına bağlanırken baglanti adlı değişkeni kullanacağız.  (Connection=bağlantı, New=yeni, )

Dim sorgu as new OleDbCommand : Burda ise; veritabanına bağlandıktan sonra veri tabanındaki tablo üzerinde sorgu çalıştırmamıza yarayacak OleDbCommand nesnesinden yeni bir tane oluşturduk ve oluşturduğumuz OleDbCommand nesnesinin ismine sorgu dedik. Artık veritabanındaki tablo üzerinde sorgu çalıştıracağımız zaman sorgu adlı değişkeni kullanacağız. (Command=komut)

Dim veriler As OleDbDataReader : Bu kod satırı ile, tablo üzerinde sorguyu çalıştırdığımızda elde edilen verileri tutacak nesne olan OleDbReader nesnesinden yeni bir tane oluşturduk ve adına veriler dedik. Artık bilgileri ekrana yazdırıken veriler(“ad”), veriler(“soyad”) tanımlamasını kullanacağız.

Tanımlamalarımız bitti. Simdi tanımladığımız nesnelerle veritabanına bağlantı kurmaya sıra geldi.

baglanti.ConnectionString = “Provider=Microsoft.jet.oledb.4.0;data source=” & Server.MapPath(“data.mdb”)
baglanti.Open()

Bu kod satırı ile oluşturduğumuz baglanti nesnesinin özelliklerini belirliyoruz. Yani veritabanımızın ismini, nerde olduğunu ve bizi veritabanına bağlayacak olan Windows hizmetini belirtiyoruz. Microsoft.jet.oledb.4.0 hizmeti Windows içinde hazır gelen access veritabanı hizmetidir (Provider=Sağlayıcı, datasource=veri kaynağı, ConnectionString=bağlanti cümlesi). Server.Mappath özelliği ile sitenizin kök dizini belirtiliyor. Bir örnek verecek olursak bilgisayarımızda site dosyalarımız C:\Inetpub\wwwroot\site dizininde olsun. Server.Mappath komutu sayesinde veritabanını belirtmek için  C:\Inetpub\wwwroot\site\data.mdb yazmamıza gerek kalmaz. Bunun yerine Server.MapPath(“data.mdb”) yazarız. Tüm bunları belirttikten sonra baglanti.Open kodu ile baglanti değişkenin belirttiği veri tabanı açılır.

sorgu.Connection = baglanti: Buraya kadar veritabanımıza bağlantı kurduk ve veritabanını açtık. Şimdi veritabanımızın içindeki tablo ve tablodaki alanları seçmemiz gerekiyor.  Bu işlemi SQL sorgularıyla yapmamız gerekiyor. Sorgumuzu açtığımız veritabanı üzerinden yapmamız için sorgu.Connection=baglanti(sorguyu baglanti değişkeni üzerinde yap.) kodunu kullanmamız gerekiyor.

sorgu.CommandText = “select * from uyeler” : Bu kod satırında yapacağımız sorguyu belirliyoruz(CommandText=Komut Yazısı). SQL sorgularından şu derste bahsetmiştik. Sorguda uyeler tablosundaki tüm alanların seçileceği belirtiliyor. Ama daha seçmedik. Sadece belirtiyoruz.

veriler=sorgu.executereader() : Bu koda kadar veritabanımızı açtık tablo üzerinde sorgumuzu belirledik ama sorgumuzu çalıştırmadık. Bir önceki komutta belirlediğimiz sorguyu sorgu.executereader() komutu ile çalıştırıyoruz ve sorgudan elde edilen bilgileri “veriler” adlı değişkende tutuyoruz(execute=çalıştır, reader=okuyucu). executereader özelliğini  veritabanından sadece bilgi okurken, listeleme yaparken kullanırız.

Buraya kadar veritabanından bilgileri aldık ve tüm bilgiler artık “veriler” adlı değişkende tutuluyor. “Veriler” değişkeni uyeler tablosundaki tüm satırları içerir. Artık elde ettiğimiz verileri ekrana yazdırmamıza sıra geldi.

While veriler.Read() : koduyla bir döngü açıyoruz. Bu döngü “veriler” adlı değişkendeki bilgilerin hepsi okunana kadar devam edecek. Burada “veriler ” değişkeni uyeler tablosundaki satırları temsil etmektedir. Döngü ilk satırdan son satıra kadar devam edecek diyebiliriz.

Response.Write(“ADI:” & veriler(“ad”) & “</br>”) : Bu kodla uyeler tablosundaki ad alanı veriler(“ad”) komutuyla ekrana yazdırılıyor ve </br> etiketiyle bir satır aşağı iniliyor. While döngüsünde ilk döngüde ilk satır yazdırılır ve sonraki döngülerdede diğer satırlara geçilir. Her döngüde satırdaki tüm alanlar veya istenilen alanlar yazdırılabilir. Biz veritabanımızdaki kayıtları alt alta yazdırıyoruz. Yani kodları çalıştırdığımızda sayfa görüntüsü aşağıdaki gibi olacak.

ADI:Harun
SOYADI:üçüncü
KULLANICI ADI:harunucuncu
ŞİFRE:1234567
E MAİL:trabzon@hotmail.com

ADI:ahmet
SOYADI:keleş
KULLANICI ADI:ahmetkeles
ŞİFRE:123123
E MAİL:ahmet@hotmail.com

baglanti.Close() : koduyla veritabanına açılan bağlantıyı kapatıyoruz ve artık  OleDbConnection nesnesinden türettiğimiz baglanti değişkeni siliniyor. Bunu kapatmamızın nedeni baglanti adlı değişkeni oluşturduğumuzda bu değişken sunucumuzun hafızasında yer kaplar. Bu bir değişken için sunucuyu meşgul etmesede sayfalarımızda birden fazla(baglanti1, baglanti2 …) değişken oluşturduğumuzda  sunucumuzun performansını düşürebilir. (Örnek : Bilgisayarımızda birden fazla program açtığımızda hafıza kullanımı artar ve bilgisayarımız yavaşlamaya başlar. Bu programları kapattığımızda bilgisayar rahatlar. )

 

Evet arkadaşlar geldik dersimizin sonuna. Veritabanı konusunu ilk kez görüyorsanız bu kodlar size biraz zor görünebilir. Ama kodları yazıp açıklamalarını tekrar okuyup ve sonunda çalıştırdıktan sonra bu kodları ezbere yazabileceksiniz. Şimdilik benden bu kadar. Hoşçakalın.


16 Yorumlar

  1. ayşe Says:

    yeni başlamama rağmen gayet açık, kurstakilerle paralel anlatılmış, çok teşekkürler….

  2. muzaffer Says:

    burada anlatıklarınızı anladım fakat dim ile değişken tanımlarken new(yeni) kod parçacığını kullanmamızın amacını sorabilir miyim?

  3. ismail Says:

    cok tesekkurler gayet basarılı anlantılmıs elinize saglık….

  4. sadık emekdar Says:

    çok güzelanlatmışsınız ayrıtısına kadar. bir konuda yardımcı olursanız sevinirim nüfus bilgileri ile bir çalışma yapmak istiyorum , sadece nüfus cüzdanındaki bilgilerle ekleme, silme, güncelleme, listeleme işlemlerini yapacağım bu konuda bilgi verirseniz sevinirim. şimdiden çok teşekkür ederim.

  5. admin Says:

    Dersleri adım adım ekliyorum. Sonraki dersler silme ve güncelleme üzerine olacak.

  6. sadık emekdar Says:

    bana örnek bir uygulama gibi bir şey gönderebilirisiniz mailden acaba hocam proje ödevim bu da nüfus bilgileriyle ilgili bir iki haftam var da. çok teşekkürler

  7. ismail Says:

    video yokmuydu acaba tam gerekli olan bi konuydu burada takldm vıdeo ya ıhtıyacım var:(

  8. nesli Says:

    bu kısma kadar yaptım ama datareader dan okunan verileri html icinde ul ve li tagları arasında gerekli yerlere response.write komutu ile yazman lazım o yuzden do while kullanamıyorum ne yapmam lazım yardımcı olur musunuz?

  9. ardem Says:

    herşeyi yaptım ama” Dim sorgu as new OleDbCommand”
    hatası veriyor.yardım edebilirseniz.???????

  10. admin Says:

    Hatayı tam olarak yazmanız daha iyi olacaktı ama ilk değişken tanımlamada aldıysanız büyük ihtimal ilk iki satırdaki sayfaya sınıfları dahil eden kodlarda bir sorun vardır. ilk iki satırdaki yani;

    < %@ Import Namespace=”System.data” %>
    < %@ Import Namespace=”System.data.oledb” %>

    kodlarını kontrol edin. Burda sorun yoksa hatayı tam olarak yazarsanız yardımcı olabilirim.

  11. ardem Says:

    Server Error in ‘/’ Application.
    Compilation Error
    Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
    Compiler Error Message: BC30002: Type ‘OleDbCommand’ is not defined.
    Line 3:
    Line 4: Sub Page_Load(sender as object, e as eventargs)
    Line 5: Dim sorgu as new OleDbCommand
    Line 6: Dim baglanti As new OleDbConnection
    Line 7: Dim veriler As new OleDbDataReader

    5.satırda hata veriyor kütüphanelerde sorun yok verdiğiniz kodu kopyala/yapıştır yaptım..
    ilginiz için teşekkürler..

  12. salim Says:

    Dim baglanti As OleDbConnection = New OleDbConnection(“Provider*Microsoft.Jet.Oledb.4.0;Data Source + Server.MapPath(“~/App_Data/veritabani.mdb”))

    bu kodda bi hata varmı sürekli uyarı veriyor ~ bunun icin gereksiz karakter diyor…neden acaba

  13. admin Says:

    ~/ karakterlerini kaldırıp klasör isimini yazın.

  14. salim Says:

    Imports System.Data
    Imports System.Data.OleDb
    Public Class Site1
    Inherits System.Web.UI.MasterPage

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If String.IsNullOrEmpty(Session(“login”)) Then
    Panel1.Visible = True
    Panel2.Visible = False
    Panel3.Visible = False
    End If
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim baglanti As OleDbConnection = New OleDbConnection(“Provider*Microsoft.Jet.OleDb.4.0;Data Source =” + Server.MapPath(“~/App_Data/veritabani.mdb”))
    Dim komut As OleDbCommand = New OleDbCommand(“select*from uye where ad=@a sifre=@b”, baglanti)
    komut.Parameters.Add(“@a”, OleDbType.VarChar).Value = TextBox1.Text
    komut.Parameters.Add(“@b”, OleDbType.VarChar).Value = TextBox2.Text
    baglanti.Open()
    Dim oku As OleDbDataReader
    oku = komut.ExecuteReader
    If oku.Read Then
    Session(“ad”) = oku(“ad”)
    Session(“soyad”) = oku(“soyad”)
    Session(“yetki”) = oku(“yetki”)
    Session(“onay”) = oku(“onay”)
    Session(“sifre”) = oku(“sifre”)
    If Session(“yetki”) = “admin” And Session(“onay”) = True Then
    Panel1.Visible = False
    Panel1.Visible = True
    Panel1.Visible = False
    ElseIf Session(“yetki”) = “user” And Session(“onay”) = True Then
    Panel1.Visible = False
    Panel1.Visible = False
    Panel1.Visible = True
    End If
    End If

    End Sub

    End Class

    burda
    Control ‘TextBox1′ of type ‘TextBox’ must be placed inside a form tag with runat=server.

    hatayı veriyor..

  15. Fatma nur Says:

    O kadar çok işime yaradıki teşekkürü bir borç bildim.Emeğinize sağlık.Anlaşılır bir anlatımla çok işime yaradı.

  16. ferhat ülker Says:

    baglanti.ConnectionString = “Provider=Microsoft.ale.oledb.12.0;data source=” & Server.MapPath(“data.mdb”)
    baglanti.Open()

    office access 2007 veri tabanı baglatısı için satır değiştirlir. ek bilgi

Yorum Yaz

Takvim

Şubat 2012
Pts Sal Çar Per Cum Cts Paz
« Oca    
 12345
6789101112
13141516171819
20212223242526
272829