Son Dakika Haberlerini Takip Edebileceğiniz FrmTR Haber Yayında. * FrmTR Sohbet Kontrol Panelinizde.
Forum TR
Go Back   Forum TR > > >
FrmTR'ye Reklam Vermek İçin: [email protected]
Cevapla
 
Konu Araçları
Eski 22-01-06, 22:12   #1
baksana59

Exclamation Veritabanı - SQL ve kullanım alanları


Veritabanı - SQL ve kullanım alanları



Veritabanı Giriş

Günümüzde program ve programcılık kavramları anıldığında Veritabanı akla ilk gelen objelerden biri olur hale geldi. Peki nedir bu Veritabanı, ne iş yapar ?
Veritabanı, bizim bir program dahilinde kullanmak istediğimiz bilgileri tutan ve sunan bir objedir. İster Executable (windows altında çalışan her nevi.exe uzantılı program) ,ister Web tabanlı programlamada olsun Veritabanı her alanda kullanılır ve imdadımıza yetişir. Biliyorsunuz, bir programa bilgi girişi yapmak, bilgileri okumak, güncellemek vs. gibi işlemler olağan bir hadise. Dolayısı ile, bu üzerinde işlem yapılan bilgiler bir yerde bulunmalı. İşte bu yer Veritabanının ta kendisidir.

Veritabanları her ne kadar tür olarak çeşitlilik göstersede işleyiş mantıkları hep aynıdır ve değişmez. Bugün her ne kadar çok türde yazılım Ürünleri olan Veritabanları varsada en çok bilinen ve kullanılanları MS Access, Oracle, Paradox, FoxPro, vs. gibi Veritabanlarıdır. Çoğu kişi için Veritabanı olayı ilk başda soğuk gelir. Haksızda değiller. Zira yazılım geliştirmeyen bir insanın Bilgisayarında Veritabanı hazır bulunan veya kullanılan bir olay değil. Fakat MS Access içlerinde en çok duyulan ve tanılanıdır. Sebebi ise MS Office paketi ile birlikte geldiği içindir.

Evet, konuyu dağıtmadan Veritabanımıza geri dönelim. Dediğim gibi Veritabanı kısaca, bir takım bilgilerin içinde tutulduğu bir objedir. Veritabanı içerisinde bilgilerimizi tutabildiğimiz gibi, bu bilgilerin üzerinde oluşturduğunuz programlar ile kolayca modifye (ekleme,silme,güncelleme gibi...) yapabiliriz.


Resim 1

Veritabanı, kendisi içerisinde var olan veya oluşturacağmız tabolardan meydana gelir. (Resim 1) Bilgiler ise bu tablo(lar) da oluşan Sütünların içerisinde tutulur. Sütunlar ise hücrelerden oluşur ve her bilgi için bir satır açılır.(Resim 2)

Biz burada kullanım kolaylığı açısından ve el altında bulunabilirlik açısından MS Access veritabanını örnek alacağız. Daha sonra arz-talep durumlarına göre diğer Veritabanlarınıda inceleyebiliriz.

MS Access, bilindiği gibi aynı diğer Ofis bileşenlerinde olduğu gibi Windows ortamında açılıp el ile (manuel) bilgi girişi yapmaya müsait bir yapıya sahiptir. Fakat bizim amacımız tabii bu değil. Amacımız Veritabanına program aracılığı ile Bilgi girip işlemek. Konumuzda ASP olduğuna göre biz şimdi manuel veya executable program ile bilgi girişini bir kenara bırakıp tamamen ASP olayına yöneleceğiz.


Resim 2

Bir veritabanı oluşturuken ilk etapda en çok hasassiyet gösterilmesi gereken husus Veritabanının dizaynıdır. Yani yapısı. Zira Veritabanı bizim yapmaya amaçladığımız programa hizmet verecek ve bu amaca tam uyumlu olması gerekir. Diyeceksiniz, daha sonradan tablo veya sütun ilave edilemezmi ? Elzem olursa elbette edilir. Fakat temel mantık bu değildir. Temel mantık aslında daha Veritabanını oluşturmaya başlamadan evel Programımızı iyi etüd etmekden geçer. Bunu başdan ne kadar iyi yaparsanız daha sonra o denli rahat edersiniz.

Öncelikle Programımız ne yapacak ve buna bağlı olarak ne tür bilgiler içerecek. Bu doğrultuda ihtiyacımız olan veri alanları daha iyi oluşturulabiliriz. Veritabanında alanların bir türü vardır. Nedir bu türler ? Bu türler, Veritabanının o alanda saklayıp işleyeceği bilgilerin türüdür. Bunlar; metin, saat, tarih, para birimi vs. türünden bilgiler olabilir. Bu çok önemli bir hususdur, zira çoğu kez başdan iyi etüd edilmyen ve gözden kaçan bir konudur. Çoğu kezde sonradan baş ağrıtabilir. Bunlara daha sonra tekrar değineceğiz.

Veritabanı objesini ASP ile ilişkilendirmek için bir bağlantıya ihtiyaç duyar. Aynı klasik programlama dillerinde olduğu gibi. Klasik programlamaya yabancı olmayan arkadaşlar için bu zaten çok bilindik bir olaydır. NT tabanlı bir Sunucuda Veritabanı bağlantılı ASP sayfaları ADO denilen nesne ile bağlantı kurar. ADO son zamanlarda Microsoft tarfından iyiden iyiye geliştirilen ve DAO nun yerini almaya başlamıştır. Peki nedir bu ADO ?

ADO, ilişkilendirilmiş açık bir Veritabanı bağlantısından erişim sağlayan nesnedir. ADO yu Program ile Veritabanı arasında bir nevi köprü olarak da tanımlayabiliriz. Windows işletim sistemlerinde ODBC sürücüleri vardır. Bu ODBC sürücüleri hangi model uygunsa onunla bağlantı kurar. ADO esasen OLE DB adlı teknolojinin üzerine kurulmuştur. Web sunucusu üzerinde bulunan bir Veritabanı ile esas olarak iki değişik tip bağlantı kurulabilir. Bunlardan birincisi DSN'li , diğeri ise DSN' siz tipi bağlantıdır. Günümüzde Host sağlayan Sunucular DSN'li bağlantılara izin vermemektedirler. Sebebi gayet basit. DSN li bağlantıda Server Admin sizin Sunucuya göndereceğiniz Veritabanını tanımlaması lazım gelir. Bunu bütün sunucudaki Veritabanları için yaptığını varsayalım, bu durumda Sunucuda korkunç bir yavaşlama meydana gelecektir. Bu sebepden dolayı DSN li bağlantılar hemen hemen hiç tercih edilmeyip kullanılmayan bağlantı tipidir.

Veritabanına Bağlantı

ASP sayfları ile kullanacağımız Veritabanına işlem yaptırabilmek için önce dediğim gibi bağlantıyı yani köprüyü sağlammız gerekir. Veritabanına bağlantı sağlamak için ASP nin "Create Object" nesnesi kullanılır. Bunu hemen bir örnek ile ifade edelim.

<%
Dim baglanti,dosyayolu,SQL,kayit 'Değişkenleri tanımladık
dosyayolu = Server.MapPath("../veri_tabani_adi.mdb") 'Veritabanımızın Sunucudaki yolunu tanımladık
Set baglanti = Server.CreateObject("ADODB.Connection") 'CreateObject nesnesi ile bağlantıyı oluşturduk
baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dosyayolu
%>

Yukarıdaki bağlantı örneğinde gördüğünüz gibi JET.OLEDB tipi bağlantı kullandım. JET son zamanlarda gerçekden en iyi, en hızlı ve en sağlıklı bağlantı tipidir. Tabii bunu kullanacaksınız diye bir kural yok. Aynı işi gören,

<%
Dim baglanti,SQL,kayit 'Değişkenler...
set baglanti = Server.CreateObject("ADODB.Connection") 'CreateObject nesnesi...
baglanti.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../veri_tabani_adi.mdb"))
%>

tip bağlantıyı'da gönül rahatlığı ile kullanablirsiniz. Sizi işlev olarak aynı sonucu ulaştıracaktır.


Evet bu şekilde ilk adımızı attık ve Veri tabanımızı ASP sayamız ile bağladık. Yeri gelmişken burda hemen çok sık sorulan ve gerçekden önemli bir konuya açıklık getirmek istiyorum. Yukarıda ADO ile Veritabanımıza bağlantıyı sağladık, daha sonra diğer yapılmasını arzu ettiğimiz işlemleri yaptık ve en sonunda bu sayfanın sonuna geldik... Geldik güzel ama, Veritabanı bağlantısı açık kaldı. Ne olacak bu, böyle kalacakmı ? Kalırsa ne olur, veya olurmu ?

Kritik bir durum olduğunu söylemem gerek. Açık bırakırsanız normal şartlar altında birşey olmayabilir. Fakat bunun bir garantisi yoktur. Uzun ASP sayfalarında bol miktrada Scriptler olur. Hali ile Programcı bazen hata yapabilir, bu bir gerçekdir. Mesela kapanmayan bir döngü (loop, wend gibi...), yahut yersiz kullanılan bir "On error resume next" objesi sizin ASP sayfanızın sunucu tarfında göçmesine bile sebep olabilir. Sayfanın göçmesini bir yana bırakın Sunucuyu çöketmeye kadar bile gidebilir. Bunlar şüphesiz olağan üstü durumlar. Sık sık olmaz. Ama siz, siz olun açtığınız her bağlantıyı işiniz bittiğinde kapatın.

<%
baglanti.close
set baglanti = nothing
%>

İşte hepsi bu kadar. Sayfanızın sonunda Veritbanı ile işiniz bittiğinde koyacağınız bu iki satır komut sizi daha sağlama alacaktır. Evet buraya kadar genel olarak bir ASP sayfasının Veritabanı ile bağlantısını gördük. Şimdi de Veritabanımız ile bağlantı kurdukdan sonra neler yapabileceğimize bir göz atalım. Yazımızın başlarında, Veritabanımıza Program aracılığı ile bilgi girmek, silmek, güncellemek, sorgulamak gibi kavramlardan söz etmiştim. İşte geldik bu konuya. Bunu nasıl yaparız, ne ile sağlarız. Sanırım bilgisayar ile ilgilenip SQL kavramını duymayan pek yoktur. SQL normal bir bilgisayar kullanıcısının hiç işi olmayacağı bir nesnedir. Fakat madem ASP ile ilgileniyorsunuz, madem Veritabanı kounusu ile ilgileniyorsunuz, o zaman SQL sizi artık yakından ilgilendirmeye başlamalı.

SQL Giriş

SQL ;açılımı itibarı ile Structured Query Language demek.Türkçesi, Yapılandırılmış Sorgu dili. Neyi Sorguluyoruz ? Tabiiki Veritabanını. SQL dünya standartı bir dildir. Şunuda hemen belirtmek istiyorum, SQL aslında çok geniş ve üzerinde Uzmanlık dalı olan bir dildir. Yani öyle kıytırıkdan küçümsenecek bir olay değildir. Fakat içiniz rahat olsun, ASP için bir SQL uzmanı olmanız gerekmiyor. Şahsen bende SQL uzmanı değilim

Fakat belli başlı kalıpları ve şablonları bilmeniz ve öğrenmeniz gerekir. Yoksa Veritabanınızda programlar aracılığı ile hiç bir işlem yaptıramazsınız ve Veritabanı kullanımının hiç bir anlamı kalmaz. SQL ile bazı örnekler vermeden önce isterseniz yapısı üzerinde çok kısa bir göz atalım.

SQL belirttiğim gibi bir Sorgulama dilidir. Bizimde burdaki amacımız Veritabanımızı sorgulamak yada bilgiler üzerinde işlem yapmak. Biz burada sadece SQL in ASP için gerekli en temel kavramlarını inceleyeceğiz. Yoksa yukarıda belirttiğim gibi SQL öyle 3-5 satıra sığacak bir olay değil. Piyasada SQL üzerine yazılmış 500-600 sayfalık kitaplar var. İlgilenler alıp ayrıca sıkı bir şekilde öğrenebilir ve üzerinde Uzman olabilirler.

SQL'in bize temel olarak dört işlevi lazım. Bunlar select, insert, delete ve update dir. Hemen kısa bir örnek ile bunu pekiştirelim.

Yukarıda (Resim 1-2) deki örneği baz alalım. Elimizde ornek.mdb adında bir Veritabanı olsun ve bu veritabının içinde Tablo1 adında bir tablomuz olsun. Bu tablomuzunda içinde Ad - Soyad - email - telefon gibi alanlar(sütünlar) olsun.

<%
'Öncelikle bağlantımızı kuralım...
Dim baglanti,dosyayolu,SQL,kayit
dosyayolu = Server.MapPath("../veri_tabani_adi.mdb")
Set baglanti = Server.CreateObject("ADODB.Connection")
baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dosyayolu

'Ve basit bir SQL cümlesi kuralım...
SQL = "select * from tablo1"
set kayit = baglanti.execute(SQL)
if kayit.EOF then
Response.Write "Kayıt yok..."
Else
%>

<% while not kayit.eof %>

<%=kayit("ad")%><br>

<% kayit.movenext
wend
%>

'Bağlantımızı kapatalım...
<%
end if
baglanti.close
set baglanti = nothing
%>

Şimdi dilerseniz, yukarıdaki basit işlemde neler olup bittiğine bir göz atıp irdeleyelim.

Kod'un en başında öncelikle yukarda incelediğimiz Veritabanı bağlantımızı yaptık. Ardından SQL cümlemizi oluşturduk. Select deymini kullanarak, SQL cümlesine Veritabanımızın içinde bulunan Tablo1 adlı tablomuzdan tüm kayıtları seçmesini söyledik. Daha sonra SQL cümlesini icra (execute) ettirdik. Ardından, imlece bir "if" döngüsü ile Tablomuzun sonuna kadar gitmesini söyledik. Zira Tabloda kaç kayıt olduğunu bilmiyoruz veya o an bilemeyiz. En azından program bunu bilmez ve bilmek zorunda değil. Eğerki tabloda henüz bir kayıt yok ise Reponse.Write nesnesi ile kullanıcıya kayıt olmadığına dair bir mesaj verdik. "else" ile diğer durumda, yani kaytı bulunması durumunda, "eof" (end of file) ile tüm mevcut kayıtları SQL cümlesine aldırıp,

<%=kayit("ad")%><br>

satırı ile sayfaya yazdırdık. Tabii bu arda dikkatinizi çekmiştir, "kayit.movenext" ve "wend" ile bu sayfaya olan kayıtları yazdırma işlemini sonuna kadar yaptırdık. En sonda ise Veritabamı ile olan bağlantımızı kapadık. Olay özet ile kısaca bundan ibaret.

Bu örnek çok basit ama, size işlemi mantık olarak açıklamak için birebir. Gayet basit bir SQL cümlesi kullandık. Bu kurallar çerçevesinde SQL cümlelerini geliştirebilir ve kompleks sorgular oluşturabilirsiniz. SQL ile daha gelişmiş sorgu cümlelerine diğer bir yazımızda yer vereceğiz. Zira SQL ile verileri okutabildiğiniz gibi silebilir, güncelleyebilir, yeni kayıtlar açabilirsiniz. Bu yazımızdaki amaç, Veritabanı olayına bağlantı kullanım alanları ve şekilleri idi.
  Alıntı Yaparak Cevapla
Eski 24-10-09, 09:36   #2
TurkVolki

Varsayılan C: Veritabanı - SQL ve kullanım alanları


Çok saçma giriş böyle mi olur.
  Alıntı Yaparak Cevapla
Eski 25-10-09, 10:04   #3
4flee

Varsayılan C: Veritabanı - SQL ve kullanım alanları


Daha bişey anlatmadan hemen kodlamaya geçmişsiniz
  Alıntı Yaparak Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz

Konu Araçları

Gönderme Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
Smiley Açık
[IMG] kodu Açık
HTML kodu Kapalı



5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Şikayet Mailimiz. İçerik, Yer Sağlayıcı Bilgilerimiz. Reklam Mailimiz. Gizlilik Politikası


Reklamı Kapat

Reklamı Kapat