ASP , Access’ten MySQL’e 2

Bir önceki makalemizde verdiğimiz programları kurduğunuzu varsayıyorum. Zaten onların kurulumu için gerekli bir çok resimli anlatım internet üzerinde mevcut. Zaten derse başlamam nedenimiz onları resimli falan kurulumlarını anlatmak değildi.

Öncelikle veritabanı bağlantı kodlarımızı yazalım. Ben Access ve Mysql i karşılaştırmalı vereceğim ki aradaki farkları görebilelim.

Access Veritabanı bağlantı kodları:
<% Response.Buffer = True dim Baglantim set Baglantim = Server.CreateObject(“Adodb.Connection”) Baglantim.Open “Provider=Microsoft.Jet.Oledb.4.0; Data Source = ” & Server.MapPath(“db/veritabani.mdb”) %>
şeklinde olacaktır.

MySQL Bağlantı kodlarımız ise :

<% Response.Buffer = True dim dbconn,Baglantim dbconn = “Driver={MySQL ODBC 3.51 Driver}; Server=localhost; UID=root; Pwd=12345; Database=veritabani; Option=16384; stmt=SET NAMES ‘utf8′” Set Baglantim = Server.CreateObject(“Adodb.Connection”) Baglantim.Open dbconn %>

İki kodda da görüldüğü gibi, mysql de herhangi bir dosya tarif etmiyoruz ancak belirttiğimiz bazı değerler var. Bunlardan birincisi Server. Server bağlanılan sunucuyu belirtir. Genelde localhost olur ancak bazı hosting şirketlerinde bir ip adresi ya da bir web sitesi adresi olarak da verilebilir. UID, kullanıcı adı demek. mysql kendi bilgisayarınıza kurmuşsanız, root olur siz değiştirmedikçe. webde yayınlıyorsanız, sizin belirlediğiniz bir isim olacaktır mysql veritabanı oluştururken. Pwd şifredir. Database de kullandığınız veritabanının adıdır. Ve bizim için son önemli adım STMT kısmı. bu kısım veritabanına bağlanırken veri alışverişinin hangi karakter kodlaması üzerinden yapılacağını belirtir. Eğer projelerinizde AJAX kullanacaksanız, ben utf-8 dil kodlamasını kullanmanızı tavsiye ederim. Sizi uğraştıracak bir çok sıkıntıdan utf-8 sizi kurtaracaktır. Access veritabanınızda sunucunuzun yerel dil kodlamasını kullanmak zorundasınız. Diğer dillerde oldukça sıkıntı çıkartacaktır. Şahsen ben çok uzun uğraş ve didinmelerim sonucunda UTF-8 taraftarıyım artık 😀

Access ile MySQL kullanımı arasındaki en büyük fark, recordset kalıplarının kullanılıp kullanılmamasıdır. Açıkçası ben artık recordsetler nasıl kullanılır unutmuşum 😀 çok eskiden yaptığım projelere bir el attım. Açıkçası beni recorsetten sıyıran olay mysql i kullanmaya başlamak değil, recorset içerisinde recorset açmaya çalışmakla başladı. Recordsetle açtığım bir döngünün içerisinde tekrardan recordset açmaya çalışında bir baktım betik patladı. Bence lanet olsun dedim döndüm Execute yönetimine. çok daha rahatladım açıkçası.

Öncelikle şunu belirtmek gerekirse, execute ile recordset arasında çok bir fark yok. mantık olarak şu var. SQL bir programlama dilidir. ASP den PHP den farklıdır. MySQL veya Oracle veya Access SQL dilini kullanan yapılardır. Yani Recordsette kullandığımız bir çok şeyi Executede de kullanacağız.

Recordset mantığı:

<% Dim rs,sql Set rs = Server.CreateObject(“Adodb.Recordset”) sql = “select * from tablo” rs.open sql,Baglantim,1,3 %>

Execute Mantığı:

<% Dim ex,sql sql = “select * from tablo” set ex = baglantim.execute(sql) %>

Görüldüğü üzere execute yönetimiyle daha kolay bir yazım ve daha az karmaşık bir yapı kullanılıyor. Ayrıca recordsetleri kapatmadığınız sürece sisteminizi şişmeye mahkumdur. Ancak execute de bunu yapmak zorunda değilsiniz. execute kullanıldığında açılır ve en son sayfa bitiminde kapanır.

Ancak recordsette kullandığımız recordcount seçeneğini execute yönetimden kullanamayacağız. Onun yerine sql ile sorgulama yapmamız gerekecektir. Yine sınırlı veri çekmede hem farklılık hem de execute da ciddi bir üstünlük vardır.

<% ‘ Execute ile veri sayma işlemi yapma [Tek satırda işleri hallettik 🙂 ] set sayim = Baglantim.execute(“select count(*) as adet from tabloadi”) ‘Accesste sınırlı veri çekeceksek – 5 tane veri çekiyoruz set access_vericek = baglantim.execute(“select top 5 * from tabloadi”) ‘ Mysql de sınırlı veri çekeceksek – 5 tane veri çekiyoruz set mysql_vericek = baglantim.execute(“select * from tabloadi limit 5”) %>

Limit kavramı aslında limit 1,4 şeklinde çalışır. limitin alt sınırı 0 dan başlar. yani limit 5 demek aslında limit 0,5 demektir. ilk kayıt 0. kayıt olarak adlandırılır. yani veritabanındaki 50. kayıdı çekmek istiyorsanız limit 49,1 demek zorundasınız. virgülden sonraki değer de kaç tane veri çekileceğini belirtir.

Bir de access ile mysql arasındaki en sıkıntılı işlemlerden biri de sayfalama işlemidir. Sayfalama işleminde limit değeri çok önem taşımaktadır. ancak access le yaptığınız her işlemi mysql ile hayli hayli yaparsınız hatta, stored prodesure dediğimiz kayıtlı prodesürleri kullanma seçeneği mysql de vardır. yani sık kullandığınız sql sorgularını mysql kendi hafızasına kaydedersiniz ve bunları yeri geldiğinde çağırırsınız. Böylece satırlarca kodu onlarca kez yazmak zorunda kalmazsınız ve sql sorgunuuza dışarıdan müdahale edilmesini engellersiniz.

Kalan eksikleri bir sonraki dersimizde işlemek üzere, görüşmek dileğiyle. Eksikleri yorumlarda bildirirseniz, daha detaylı bir çalışma yaparız.

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.