ASP ile veritabanı bağlantısı yapabilmek için bizim ilk etap olarak kullanacağımız Microsoft Access programına (Ofis Paketi ile birlikte gelir.)
ve bir web sunucuya ihtiyacımız var. Bu web sunucusu bilgisayarımızdaki IIS, PWS olabilir veya bir hosting olabilir.
Önce Microsoft Access programını açıyoruz. CTRL+N ile yeni bir Veritabanı (Bundan sonra VT diyeceğim) yaratıyoruz. VT'mizi web sunumuzun altında ana dizininin üzerindeki db dizinine deneme.mdb adıyla kayıt ediyoruz.
Create Table In Design View (Tasarım görünümünde tablo oluştur) 'i tıklıyoruz. Üç kısımı bir form gelicek karşımıza. Birinci kısıma alan (field) ismini yazacağız. İkinci kısımda alan türünü seçeceğiz. Üçüncü kısım genellikle kullanılmaz ama alanın açıklaması oraya yazılır.
Biz fldAuto, fldIsim, fldTelefon isimli üç alan yaratıyoruz.
fldAuto için Otomatik Sayı'yı (Auto Number) seçiyoruz.
fldIsim ve fldTelefon için Metin'i (Text) seçiyoruz.
Sonra kaydetme tuşuna basıyoruz. Tablo adını soran bir dialog gelicek karşımıza tblTablo yazıyoruz. Sonra Birincil Anahtar ile ilgili bir uyarı gelicek evet diyoruz. Artık tablomuz yaratıldı.
Şimdi ASP dosyamızı açıyoruz; (Adı dboku.asp olsun)
Kod:
<%
SET objConn = Server.CreateObject("ADODB.Connection") ' Veritabanına bağlanmak için gerekli nesneyi yarattık.
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/deneme.mdb") & ";" 'Bağlantı komutumuzu yazdık.
objConn.Open strConn 'Bağlanma komutunu verdik
strSQL = "SELECT * FROM tblTablo ORDER BY fldIsim ASC"
'SELECT veritabanından veri almak için kullanılan bir SQL komutudur.
'* ile tüm alanları almasını belirtik. İsterseniz tüm alanları yazabilirsiniz; fldAuto, fldIsim, fldTelefon gibi.
'FROM hangi tablodan veri alacağımızı belirlemeye yarar.
'tblTablo ile tablo adımızı da belirttik
'ORDER BY sıralamayı belirlememizi sağlar.
'fldIsim sıralamanın fldIsim alanına bağlı olmasını sağlıyor.
'ASC ile sıralama türü. ASC olursa A-Z'ye (Yükselen) DESC olursa Z-A'ya (Azalan) sıralama yapmış oluruz.
SET objRS = Server.CreateObject("ADODB.Recordset") ' Kayıt setini oluşturduk.
objRS.Open strSQL, objConn, 1, 3
'.Open komutu ile bağlantı açmasını istiyoruz.
'strSQL ile SQL Sorgusunu belirliyoruz.
'objConn ile Bağlantı nesnesini belirliyoruz.
'1, 3 ise cursor adını verdiğimiz olay. Kayıt setinin özelliklerini belirliyor.
Do UNTIL objRS.Eof 'Kayıtların sonuna kadar veri almasını istiyoruz.
Response.Write objRS("fldIsim") & " adlı kişinin telefon numarası : " & objRS("fldTelefon") & "
"
'Kayıtlarımızı objRS("Alanadi") şeklinde alıyoruz.
objRS.MoveNext 'Bir sonraki kayıta geçmesini istiyoruz."
Loop 'Döngünün başa dönmesini ve devam etmesini istiyoruz.
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>SQL'de yaygın olarak kullanılan 4 sorgu komutu vardır; SELECT, UPDATE, DELETE, INSERT
SELECT : Veri almaya yarar.
UPDATE : Verilerin içeriğini güncellemeye yarar.
DELETE : Verileri silmeye yarar.
INSERT : Veri eklemeye yarar.
SELECT Komutu;
Genel olarak 3 veya 4 kısımdan oluşur.
Kod:
SELECT *
FROM tblTablo
WHERE fldField = 'Veri'
ORDER BY fldField ASCSELECT * ile hangi fieldlerden veri alacağımızı belirliyoruz. * kullanmak tüm fieldleri seçtiğimizi belirtiyor. SELECT fldField de diyebilirdik.
FROM tblTablo ile hangi tablodan veri alacağımızı belirliyoruz. tblTablo veri alacağımız tablonun ismi.
WHERE fldField = 'Veri' ile koşullarımızı belirliyoruz. Burda fldField alanının içeriği Veri olanları al diyoruz.
ORDER BY fldField ASC sıralamayı belirler. fldField alanına göre ve artan (A-Z) sıralama yapmasını belirtiyoruz. ASC yerine DESC olsaydı Z-A yani azalan sıralama yapmasını belirtmiş olacaktık.
WHERE alt cümleciği (veya komutu) ile birlikte LIKE da kullanabiliriz. Direk WHERE fldField = 'Veri' dediğimiz zaman sadece tüm kaydı aynı olanlar çıkar.
Yani WHERE fldIsim = 'Can' dediğimiz zaman Alican veya Özgecan ismine sahip olan kişiler çıkmaz. Sadece Can olanlar çıkar.
WHERE fldIsim LIKE '%Can%' dediğimiz zaman ise içinde can geçen herkez çıkar.
LIKE ile en çok kullanılan % ve _ jokerleri vardır. % bulunduğu yerdeki bir veya daha uzun metinleri belirtirken _ ise sadece bir karakter uzunluğundaki metinleri kasteder. Yani C_n ile Can'ı alabiliriz ama Caan'ı alamayız. Caan'ı almak için C%n kullanmalıyız.
Kod:
UPDATE tblTablo
SET fldField = 'Veri', fldField2 = 'Veri2'
WHERE fldField = 'Koşul'UPDATE tblTablo ile hangi tabloda güncelleme yapacağımızı belirliyoruz.
SET fldField = 'Veri', fldField2 = 'Veri2' ile değişikliklerimizi yapıyoruz. Bir alanda daha değişiklik yapmak istediğimizi düşünelim; SET fldField = 'Veri', fldField2 = 'Veri2', fldField3 = 'Veri3' şeklinde kullanabiliriz.
WHERE fldField = 'Koşul' ile koşulumuzu belirledik yani bu değişiklikler sadece fldField alanı koşul olan kayıtlarda gerçekleşecek. Eğer Bu komutu kullanmazsak değişiklik tüm kayıtlarda yapılır.
SQL Cümleciği ile güncelleme yaptığımız gibi Kayıt seti ile de yapabiliriz nasıl mı?
Kod:
<%
SET objConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/deneme.mdb") & ";"
objConn.Open strConn
strSQL = "SELECT * FROM tblTablo WHERE fldField = 'Veri'"
SET objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 1, 3
objRS("fldField") = "Veri" 'Değişikliklerimizi yapıyoruz.
objRS("fldField2") = "Veri2"
objRS("fldField3") = "Veri3"
objRS.Update 'Güncelleme komutu veriyoruz.
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>
DELETE veri silmeye yarar;
Kod:
DELETE FROM tblTablo
WHERE fldField = 'Veri'DELETE FROM tblTablo : Verilerin silineceği tablo(veya tabloları) belirlememizi sağlar.
WHERE fldField = 'Veri' : Koşul belirlememizi sağlıyor.. Eğer bu komutu kullanmazsak tüm kayıtlar silinir.
SQL Sorgusuyla silme yapabildiğimiz gibi kayıt seti ile de silme yapabiliriz.
Kod:
<%
SET objConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/deneme.mdb") & ";"
objConn.Open strConn
strSQL = "SELECT * FROM tblTablo WHERE fldField = 'Veri'"
SET objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 1, 3
objRS.Delete 'Silme komutu veriyoruz.
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>INSERT kayıt eklemeye yarar;
Kod:
INSERT INTO tblTablo (fldField, fldField2, fldField3)
VALUES ('Veri', 'Veri2', 'Veri3')INSERT INTO tblTablo (fldField, fldField2, fldField3) : Hangi tablo ve o tablonun içindeki hangi alanlara (field) veri girileceğini belirliyoruz.
VALUES ('Veri', 'Veri2', 'Veri3'); Ekleyeceğimiz verileri belirlememizi sağlar
SQL ile yaptığımız işi kayıt seti ile de yapabiliyoruz;
Kod:
<%
SET objConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/deneme.mdb") & ";"
objConn.Open strConn
strSQL = "SELECT * FROM tblTablo WHERE fldField = 'Veri'"
SET objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 1, 3
objRS.AddNew ' Yeni kayıt eklemesini belirtiyorux.
objRS("fldField") = "Veri" 'Verileri belirtiyoruz yapıyoruz.
objRS("fldField2") = "Veri2"
objRS("fldField3") = "Veri3"
objRS.Update 'Güncelleme komutu veriyoruz.
'Gördüğünüz gibi Kayıt eklerken de bir nevi güncelleme yapıyoruz.
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>SQL'in ASP ile kullanımında;
Kod:
<%
strSQL = " UPDATE tblTablo SET fldField = 'Veri' WHERE fldField = 'Koşul';"
objConn.Execute(strSQL)
%>şeklinde kullanılmalıdır.
INSERT, UPDATE ve DELETE komutları sadece objConn.Execute(strSQL) komutu ile kullanılabilir. Ancak SELECT mutlaka kayıtseti ile kullanılmalıdır.
INSERT, UPDATE ve DELETE komutlarının sonunda ; bulunmalıdır. SELECT'de bulunursa hata alınır.
Ayrıca SQL'de bunların haricinde ALTER TABLE, CREATE TABLE, DROP TABLE gibi komutlar da bulunmaktadır. Bunları da ileride işleyebiliriz.
Kayıtseti ile kullanabileceğiniz bir diğer komut ise .RecordCount. .RecordCount ile kayıt sayısını alabiliriz. Ancak burda dikkat etmemiz gereken yer KayıtSetinin en az 1,3 Cursorleri ile açılması gerektiğidir.
Kod:
<%
SET objConn = Server.CreateObject("ADODB.Connection") ' Veritabanına bağlanmak için gerekli nesneyi yarattık.
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/deneme.mdb") & ";" 'Bağlantı komutumuzu yazdık.
objConn.Open strConn 'Bağlanma komutunu verdik
strSQL = "SELECT * FROM tblTablo ORDER BY fldIsim ASC"
'SELECT veritabanından veri almak için kullanılan bir SQL komutudur.
'* ile tüm alanları almasını belirtik. İsterseniz tüm alanları yazabilirsiniz; fldAuto, fldIsim, fldTelefon gibi.
'FROM hangi tablodan veri alacağımızı belirlemeye yarar.
'tblTablo ile tablo adımızı da belirttik
'ORDER BY sıralamayı belirlememizi sağlar.
'fldIsim sıralamanın fldIsim alanına bağlı olmasını sağlıyor.
'ASC ile sıralama türü. ASC olursa A-Z'ye (Yükselen) DESC olursa Z-A'ya (Azalan) sıralama yapmış oluruz.
SET objRS = Server.CreateObject("ADODB.Recordset") ' Kayıt setini oluşturduk.
objRS.Open strSQL, objConn, 1, 3
'.Open komutu ile bağlantı açmasını istiyoruz.
'strSQL ile SQL Sorgusunu belirliyoruz.
'objConn ile Bağlantı nesnesini belirliyoruz.
'1, 3 ise cursor adını verdiğimiz olay. Kayıt setinin özelliklerini belirliyor.
Do UNTIL objRS.Eof 'Kayıtların sonuna kadar veri almasını istiyoruz.
Response.Write objRS("fldIsim") & " adlı kişinin telefon numarası : " & objRS("fldTelefon") & "
"
'Kayıtlarımızı objRS("Alanadi") şeklinde alıyoruz.
objRS.MoveNext 'Bir sonraki kayıta geçmesini istiyoruz."
Loop 'Döngünün başa dönmesini ve devam etmesini istiyoruz.
Response.Write objRS.RecordCount & " telefon kaydı bulunmuştur."
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>SQL'de bazı fonksiyonlar bulunmaktadır;
SUM, DISTINCT, LEFT, RIGHT, LTRIM, TRIM , RTRIM, AVG, COUNT
SUM = Bir alanın tüm kayıtlar toplamını verir,
DISTINCT = Farklı Kayıtları alır
LEFT = Alanın başından belirli sayıda karakterden oluşan veri alır
RIGHT = Alanın sonundan almaya başlar.
LTRIM = Bir alanın başındaki boşlukları siler
TRIM= Bir alanın başındaki ve sonundaki boşlukları siler.
RTRIM = Sonundaki boşlukları siler
AVG = Bir sayı alanının ortalamasını alır
COUNT = Kayıtlar toplamını alır.
SELECT SUM(fldYas) As fldYasToplam FROM tblUyeler
SELECT DISTINCT(fldIsım) FROM tblUyeler
SELECT Left(fldIsim, 3) As fldIsimUc FROM tblUyeler
SELECT Right(fldIsim, 3) As fldIsimSonUc FROM tblUyeler
SELECT LTrim(fldKullaniciAdi) As fldKullaniciAdiSol FROM tblUyeler
SELECT LTrim(fldKullaniciAdi) As fldKullaniciAdiHepsi FROM tblUyeler
SELECT RTrim(fldKullaniciAdi) As fldKullaniciAdiSag FROM tblUyeler
SELECT AVG(fldYas) As fldYasOrtalamasi FROM tblUyeler
SELECT COUNT(*) As fldToplam FROM tblUyeler
Bu komutlar SQL de böyle yazılıyor işte. Recordset ile
objRS("As_densonrayazilankisim") veya objRS(0) çeklinde çağrılabilirler. (DISTINCT hariç)
__________________