ASP'de Veritabanından nasıl bilgi alırız?(SQL SELECT veADODB.Recordset)

cartman

Katılımcı Üye
28 Ara 2005
932
17
zBjk
Veritabanından nasıl bilgi alırız?
(SQL:SELECT ve ADODB.Recordset)
Bir önceki dersimizde veritabanına nasıl bağlanacağımızı öğrenmiştik. Şimdi bağlantığımız bu veritabanından nasıl veri çekeceğimizi yani veritabanının içindeki bilgileri nasıl sayfaya yazdıracağımzı öğreneceğiz.
Önce SQL
Kısaca SQL' dan söz edelim. SQL veritabanından veri okumak, veri değiştirmek, silmek gibi işlemleri yapabilmemiz için geliştirilmiş bir dildir.
Biz burada SQL ' ın SELECT komutunu göreceğiz. Daha sonraki derslerde SQL'ın diğer fonksiyonlarından da söz edeceğiz. SQL' ın SELECT komutu ile kullanımı şöyledir:
sql = "SELECT adi, soyadi FROM adres"
Bu şekildeki bir kullanımda veritabanından adres isimli tablodan sadece adi ve soyadi alanlarından veri alabiliriz. Tablodaki bütün alanları seçmek için ya bütün alanların adını yazacağız ya da:
sql = "SELECT * FROM adres"
Gördüğünüz gibi " * " işareti ile tablodaki bütün alanları seçebiliriz.
Değişkenimizin adı sql ama bu zorunlu değil. Siz istediğiniz bir ismi değişken olarak atayabilirsiniz.
Recordset
Veritabanına bağlandıktan sonra verileri sayfaya yazdırmada bize yardımcı olacak nesne ADO' nun Recordset nesnesidir. Oluşturduğumuz veriyolundan sayfalarımıza bilgi gelmesi için .Execute (icra et) metodunu kullanırız. Bu komuta icra edecek bir komut SQL' dır.
Şimdi bir örnek yapalım. Önce veritabanına bağlanalım. Daha sonra veritabanındaki bilgileri sayfaya yazdıralım. Bu örneği baglanti.asp adı ile kaydedin:

<html>
<head>
<title>Veritabanından veri çekme</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">
</head>
<%
Dim veriYolu, sql, Kayitdizisi

'veritabanına bağlanalım

Set veriYolu = Server.CreateObject("ADODB.Connection")
veriYolu.Open "ornek"

'recordset nesnesini oluşturalım

Set Kayitdizisi = Server.CreateObject("ADODB.Recordset")

'sql kodlamasını yapalım

sql = "SELECT * FROM adres"

'son olarak verileri sayfaya yazdırmak için

Kayitdizisi.Open sql, veriYolu, aOpenStatic
%>

<body>
<p>
<table border="0" width="60%">

<tr>
<td><b>sıra:</b> </td>
<td><b>İsim:</b> </td>
<td><b>Telef. no: </b></td>
<td><b>Adres: </b></td>
</tr>

<% Do While Not Kayitdizisi.eof %>

<tr>
<td><%=Kayitdizisi("id") %> </td>
<td><%=Kayitdizisi("isim") %></td>
<td><%=Kayitdizisi("telNo") %></td>
<td><%=Kayitdizisi("adres") %></td>
</tr>

<% Kayitdizisi.MoveNext
Loop %>


</table>
</body>
</html>

Bu sayfayı kaydedip açtığınızda görüntü şöyle olmalıdır:
baglanti-gorunum.jpg

Gördüğünüz gibi veritabanındaki veriler sayfaya yazdırıldı..
Şimdi kodlamayı daha derinlemesine inceleyelim:
ASP kodlarının arasında önünde tek tırnak ( ' ) işareti olan satırlar açıklama satırlarıdır. Bu satırlar orada ne yapmak istediğimizi açıklıyor.
Her zamanki gibi ilk önce değişkenlerimizi tanımladık. İyi programcılar önce değişkenlerini tanımlarlar, tanımsız değişken kullanmazlar.
Daha sonra veritabanımıza bağlandık. (veritabanına bağlantı kurmayı bir önceki dersimizde görmüştük.)
Recordset nesnesini oluşturduk. Bu veritabanından verileri almamız için gerekli.
SQL kodlarımızı oluştururken "adres isimli tablodaki bütün verileri al" dedik.
Son olarak verileri sayfaya yazdırmak için Recordset nesnesini açtık.
Kayitdizisi.Open sql, veriYolu, aOpenStatic
Buradaki Kayitdizisi Recordset nesnesinin değişkeni. Bu değişkeni açıyoruz ve komut olarak sql, (SQL kodlaması), veriYolu (Veritabanı bağlantısı) ve aOpenStatic dedik. Burada aOpenStatic dememizin sebebi ise; .Open Recordset' in bir metodudur. Buradaki aOpenStatic, Static ( yani durağan) olarak veritabanındaki kayıtları al demektir. Böylece kayıtlar normal olarak sayfaya yazdırılacaktır. Veritabanındaki halleri gibi..
Recordset'in .Open ' dan başka .Update, .Delete ve .Addnew metodları da vardır. Bunları da göreceğiz.
Daha sonra bir tablo oluşturduk. Veritabanındaki verileri bu tabloya yerleştireceğiz.
Şu deyimle:

<% Do While Not Kayitdizisi.eof %>
Demek istediğimiz; Kayitdizisinin sonuna gelinmedi ise,
<% Kayitdizisi.MoveNext
Loop %>

kayıtları sayfaya yazdırmaya devam et. Bu *** deyimin arasında ise Recordset ile veritabanından aldığımız verilerin isimleri yazılı. Böylece Kayitdizisi yani veritabanındaki verilerin sonuna gelene kadar veriler sayfaya yazdırılmaya devam edilecek. Biliyorsunuz ki bu bir döngüdür. (Döngüleri daha önceki deslerimizde görmüştük.)
Verilerin sayfaya yazdırılmasını sağlayan:

<%=Kayitdizisi("id") %>

Bu komuttur. Burada Kayitdizisinden id isimli alanı göstermesini istiyoruz.

Veritabanına bağlantı ve bu bağlantı ile verileri sayfaya yazdırmak çok önemli konulardır. Bu konuda bir çok deneme yapmalısınız.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.