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.comADI: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.







Mart 13th, 2010 at 23:46
yeni başlamama rağmen gayet açık, kurstakilerle paralel anlatılmış, çok teşekkürler….
Nisan 14th, 2010 at 00:53
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?
Mayıs 18th, 2010 at 19:28
cok tesekkurler gayet basarılı anlantılmıs elinize saglık….
Mayıs 19th, 2010 at 16:40
ç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.
Mayıs 19th, 2010 at 23:58
Dersleri adım adım ekliyorum. Sonraki dersler silme ve güncelleme üzerine olacak.
Mayıs 21st, 2010 at 19:10
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
Mayıs 24th, 2010 at 21:46
video yokmuydu acaba tam gerekli olan bi konuydu burada takldm vıdeo ya ıhtıyacım var:(
Temmuz 28th, 2010 at 22:37
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?
Nisan 19th, 2011 at 15:36
herşeyi yaptım ama” Dim sorgu as new OleDbCommand”
hatası veriyor.yardım edebilirseniz.???????
Nisan 19th, 2011 at 21:53
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.
Nisan 20th, 2011 at 14:43
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..
Temmuz 10th, 2011 at 18:33
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
Temmuz 10th, 2011 at 19:36
~/ karakterlerini kaldırıp klasör isimini yazın.
Temmuz 10th, 2011 at 23:45
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..
Ağustos 1st, 2011 at 02:16
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ı.
Ağustos 8th, 2011 at 00:11
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