ASP ile MySQL veritabanı bağlantısı - ASP MySQL Bağlantısı

ASP ile MySQL veritabanı bağlantısı - ASP MySQL Bağlantısı
ASP ile MySQL veritabanı bağlantısı - ASP MySQL Bağlantısı

Merhabalar geliştirici dostlar. Sınavlarımın bitiminden sonraki ilk gecemde yeni uğraşlarımdan biri olan ASP de MySQL veritabanı kullanımı.. Şu an üzerinde çalıştığım bir kaç ASP projemde veritabanı olarak Microsoft Access Database kullanıyorum. Fakat kayıt sayısı birhayli fazla olan bir projemde ciddi performans sorunları ile karşılaşıyordum. Bunun çözümü için sürekli veritabanı sıkıştır ve onar, sürekli bakım yap vs vs.. Access ile uğraşanlar bilirler ne derece zordur. Bunun için yeni alternatif çözümler aramaya başladım. Zaten MySQL öğrenmek yapacaklarım arasındaydı, tıpkı .NET öğrenmek gibi.. Bunun için ilk aklıma gelen kullandığım veritabanı sistemini değiştirmem gerektiği oldu. Ve bugün bende serverima bir MySQL server kurdum, Access veritabanımdaki kayıtları yeni bir MySQL veritabanına aktardım. Projemi bu şekilde çalıştırdığımda ortaya çıkan çok ciddi performans artışı beni inanılmaz mutlu etti. Açıkçası bu kadar hız, bu denli bir performans beklemiyordum bu değişimden. 

Ortaya çıkan performans artışını gördükten sonra artık yeni projelerimde Ms Access Database kullanmaktan vazgeçtim. Tam da şu an vazgeçtim hemde.   MSAccess artık benim için bitmiştir. 4 yıldır profesyonel derecede ASP ile haşır neşir olan, onlarca proje yazmış biri olarak ben bile vazgeçtiysem bu sevdadan, sizin için de bitmeli bu sevda bu yazıdan sonra.

ASP'de normalde Access Kullanan geliştirici arkadaşlara sesleniyorum. Hemen access veritabanınızı siliyorsunuz ve hostunuza MySql veritabanı kuruyorsunuz. 

Ve ASP'deki access veritabanı bağlantı kodunuzu, yani;

Set baglanti = server.CreateObject("adodb.connection")
baglanti.open "Provider=Microsoft.Jet.oledb.4.0;Data Source=" & server.Mappath("VERITABANI_ADINIZ")


Sadece ve sadece aşağıdaki kod ile değiştirin.

Set baglanti = Server.createObject("Adodb.Connection")
baglanti.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=HOSTING_IP_ADRESINIZ; UID=KULLANICI_ADI; pwd=PAROLA; db=VERITABANI_ADINIZ;" 


Mevcut sisteminizi tamamen MySql veritabanına geçirmiş oldunuz. Tabi Access deki tablo ve sutunları içerisindeki verilerle beraber MySql'e aktararak.. Tabi sadece veri çekme işlemini yapmış olduk. 

Örnek olarak MySql veritabanından veri çeken bir kod yazalım hemen.

MySql veritabanı oluşturuyoruz ve sonrasında ise uyeler isimli tablo ile kullanici isimli bir sutun oluşturuyoruz. Veritabanımız hazır, ve artık gelelim veri çekme işlemine. 

Mysql.asp isimli dosya oluşturduk ve içerisine aşağıdaki kodları yazdık. Server'a gönderip Uyeler tablosundaki kullanici isimli sutundaki tüm verileri listelettirdik. Gayet kolay.

<%
mysql_server = "localhost"
mysql_user = "kullanici_adiniz"
mysql_pass = "parolanız"
mysql_db = "veritabani_adi"

Set baglanti = Server.createObject("Adodb.Connection")
baglanti.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" & mysql_server & "; UID=" & mysql_user & "; pwd=" & mysql_pass & "; db=" & mysql_db & ";" 

Set rs = Server.CreateObject("Adodb.Recordset")
yden="Select * From uyeler"
rs.open yden, baglanti, 1, 3

if not (rs.eof or rs.bof) then

rs.pageSize=50
for i=1 to rs.pagesize 
if rs.eof then exit for

response.Write rs("kullanici")

rs.Movenext
next

end if

rs.close
Set rs = nothing

baglanti.close
Set baglanti = nothing
%>


Aslında demek istediğim prosedür Access bağlantıları oluşturulurkenki prosedürler ile aynı. Sadece MySQL ile oluşturduğumuz veritabanı bağlantılarında sık kullanılan yöntemlerden bazılarından fedakarlık etmemiz gerekiyor. Mesela : Recordset Objesini MySql bağlantılarda kullanamıyoruz. Bu bir eksiklik değil aslında, bizi gereksiz kodlardan kurtaran bir kolaylık.

Hemen basit derecede kullanım kodlarımıza geçelim.

Veritabanı bağlantımızı nasıl yaparız;

<%
mysql_server = "localhost"
mysql_user = "kullanici_adiniz"
mysql_pass = "parolanız"
mysql_db = "veritabani_adi"

Set baglanti = Server.createObject("Adodb.Connection")
baglanti.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" & mysql_server & "; UID=" & mysql_user & "; pwd=" & mysql_pass & "; db=" & mysql_db & ";" 
%>


Yukarıdaki kodlarımızı biraz açıklayacak olursak, 

mysql_server değişkeninin değeri MySQL veritabanımızın bulunduğu serverın adını taşıyor. Bu değişken genelde "localhost" olur, ama siz server ip adresinizi de yazabilirsiniz. 
mysql_user = Veritabanı için oluşturduğumuz kullanıcı adımız.
mysql_pass = Veritabanı için oluşturulan parolamız.
mysql_db = Veritabanımızın adı.


Veritabanına nasıl yeni kayıt ekleriz;

<%
baglanti.Execute("insert INTO uyeler(id,kullanici) VALUES (1, ’Hasan’);")
baglanti.Execute("insert INTO uyeler(id,kullanici) VALUES (2, ’Ayşe’);")
%>


Kayıtları ekledik. Peki bir kaydı nasıl düzenleriz;

<%
baglanti.Execute("update uyeler SET kullanici=’Hafo’ where id=1;")
%>


ID numarası 1 olan kaydın kullanıcı adını Hafo olarak değiştirdik. Peki bu kaydı nasıl sileriz;

<%
baglanti.Execute("delete FROM uyeler where id=1;")
%>


Şu an ID numarası 1 olan az önce düzenlediğimiz kaydı silmiş olduk.

Kayıt sayısını nasıl alırız;

SELECT COUNT(*) AS TOPLAM FROM uyeler;

Kullanımı örneği de şu şekildedir,

<%
Set ToplamKisi = Baglanti.Execute(“SELECT COUNT(*) AS TOPLAM FROM uyeler;”)
Response.Write Toplamkisi(“TOPLAM”)
%>


Bu yazım benim gibi geçiş evresi yaşayan ve artık MySQL ile çalışmayı düşünen arkadaşlara giriş seviyesinde yararlı olması temennim ile..

Bol bol projeli günler.

Bugün bir iyilik yap, bu yazıyı arkadaşlarınla paylaş :

BU YAZIYI OKUYANLAR BUNLARI DA OKUDU

YORUMLAR

  1. profilRıza Çetinyürek

    Kardeşim verdiğin bilgiler için gerçekten çok teşekkür ederim. başarılı bir blogun var. bende access ten mysql e geçmek istiyorum artık. ama bu anlattıklarında anlamadığım birşey var. veritabanı bağlantısını oluşturduk ve mysql.asp ye tablo oluşturmak için gereken kodları girdik. ben mysql.asp sayfasına her tıkladığımda aynı isimli bir tablo açamayacağı için sayfayı 2. kez açtığımda hata vermeyecek mi? kusuruma bakma bilmediğim için soruyorum. mantık yürütünce böyle bişey canlanıyor kafamda. sayfaya tekrar tekrar tıkladığımda tablo oluşturma kodunu Set rs=Server.CreateObject("Adodb.Recordset") atlayacak mı acaba? nasıl çalışıyor bunu öğrenecektim

    • Hafzullah Yıldırım

      Merhaba Rıza Çetinyürek;

      Mysql veya Access de veritabanında ilk taloları oluşturmaktan kastediyorsun sanırım. Bu işlem için neden kod kullanarak tablo oluşturuyorsun ki, Access gibi Mysql için de çok basit programları var, bağlanıyorsun ve tablonu vs oluşturabiliyor, verilerine direk ulaşabiliyorsun.

      Windows için araştırma yaparsın ama ben Mac için Sequel Pro ve RazorSql kullanıyorum ikisinden de memnunum.

      Bu örnekte verdiğim ASP Mysql bağlantısı tamamen veri çekmek, veri silmek, tabloya veri eklemek ve düzeltme işlemleri içindir.

      • Rıza Çetinyürek

        Hocam şimdi anladım durumu. Peki isimtescilden aldığım hosting içinde bana mysql veri tabanı da veriyor. veri tabanı adını, kullanıcı adını ve şifresini ben oluşturuyorum ama bu oluşturduğum mysql veri tabanına başka bir arayüzle nasıl ulaşabilirim ve tablolar oluşturabilirim. bu konuda yardımcı olabilir misin bana?

      • Hafzullah Yıldırım

        Bu tarz bir çok program var ama ben sana örnek bir tane vereyim, Navicat MySQL Windows isimli programı indirip kurabilirsin. İşini fazlası ile görecektir.

      • Rıza Çetinyürek

        Peki son bisey daha sormak istiyorum hocam.. ASP ile mySQL ikilisini windows hostingde kullanabilirmiyiz. isimtescil.netten aldığım hosting 250 MB lık bir mysql veri tabanı veriyor bana. AMA linux hostingi seçersem. Bu veritabanını ASP ile kullanacağım için linux hosting seçmeliyim. Burada da herhangi bir sıkıntı çıkmaz değil mi? Yani kodlamalarda sorun yaşarmıyım?

      • Hafzullah Yıldırım

        Rıza bey, ASP microsoft ailesinin geliştirdiği bir kodlama dilidir, linux'ta çalışmaz. MySQL ise Microsoft veya Linux tabanlı hostinglerin her ikisinde de çalışır. Yani ASP ve MySQL istiyorsan Windows Hosting almalısın.

  2. profilWmsterde

    Valla kradeş yıllardır asp kullanan birileri bu şekilde mysqle geçemez. Benim gibi driver hatası alabilir. Yani bir zahmet onu da anlatsaydın. Kimse böyle tıkır tıkır mysql geçemiyor geçse zaten niye uğraşsın accessle. Şu tarz hatalar alacaktır. IIS aletini mysql için hazırlamak lazım.

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'
    [Microsoft][ODBC Driver Manager] Data source name not foundandno default driver specified
    asdsadsad/incdex .asp, line 26 (bu satır Baglanti.Open "Driver={MySQL ODBC 3.51 Driver};SERVER= diye devam eden satır. )

    • Hafzullah YILDIRIM

      IIS denen illet şey zaten problem yuvası bence. Kendinize ait server olmadıkça bu dertleriniz hep olacaktır. Dreamweaver ile kendi ftp'si üzerinden kodlama yapacak şekilde alıştırın kendinizi. O zaman IIS ye gerek kalmıyor, basit bir host bile işinizi görecektir.

  3. profilEd...

    Ya arkadaş ne ***** insanlarsınız. Kod paylaşıp kopyalamayı mı yasaklıyorsunuz. Vizyonunuza ******* ya.....

Yorum yap

Geçersiz bir mail adresi girdiniz. Lütfen tüm zorunlu alanları doldurun. *