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.

Hafzullah Yıldırım

Merhaba. Ben Hafzullah! Kocaeli'de yaşayan bir yazılım geliştiriciyim. 12 yıldır doğrudan sektörün içerisindeyim. Şu anda Hafzullah.com.tr yazılım firmasının kurucusu ve geliştiricisiyim. İş hayatım, örgün eğitim gören bir üniversite öğrencisiyken başladı. Freelance çalışan olarak birçok web ve masaüstü projesi içerisinde yer aldım. Düzenli olarak altında imzam olan-olacak projeler geliştiriyor, blog yazıyor ve fotograf çekiyorum.

Toplam 4 Yorum

Rıza Çetinyürek
Rıza Çetinyürek

30.09.2015 16:46:09

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
Hafzullah Yıldırım

30.09.2015 16:46:09

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.

Wmsterde
Wmsterde

27.06.2016 23:45:26

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 Yıldırım
Hafzullah Yıldırım

27.06.2016 23:57:42

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.

Ed...
Ed...

21.04.2017 21:30:24

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

Hafzullah Yıldırım
Hafzullah Yıldırım

22.04.2017 03:19:04

Eğer kopyalama engelini geçip de bu kodları kopyalamıyorsan bu kodlar zaten sana fazla demektir.

Can
Can

17.03.2018 10:34:15

Peki mysql kullanırken 3.51 yoksa 5.3 kullanmalıyız arasındaki fark nedir? 5.3 kurdugumuzda ansi ve unicode var windows odbc kaynağından bunlar ne anlama geliyor. birde allah aşkına şu sag engelemeyi kaldır. Eskiden kopya olmasın diyeydi ama artık google kopya içerikleri test ediyor bildigim kadarı ile bu yazıyı sen yayınladıysan google yayınlama tarihine bakarak orjinal yazıyı öne çıkarıyor yanlışım varsa düzelt.

Sende Yorum Yap

Benzer Yazılar