|
ASP ile MySQL Veritabanına Bağlantı Yapmak ve Kullanmak
Jul 24,2007 00:00
by
canawar
ASP İLE MySQL VERİTABANINA BAĞLANTI YAPMAK VE KULLANMAK Merhaba ASP Coder'ları. Bugün Access'dan uzaklaşacağız ve farklı bir veritabanına değineceğiz. MySQL hakkında bilgi almak istiyorsanız. Öncelikle bu adresteki (http://www.ceturk.com/makaleoku.asp?id=24) Ayhan Ergün'ün MySQL ile ilgili makalesine göz gezdirmenizi tavsiye ederim. MySQL veritabanı, Access'e göre aynı anda daha fazla kullanıcının bağlanacağı, zor işlemler yapacağı fakat yine de Access'ten çok daha performanslı bir veritabanıdır. MySQL veritabanları bir hosting müşterisinin indirebileceği dosyalar değildir. Müşteri sadece veritabanını açar, içine tablolarını yapar, verileri doldurur, veritabanını kullanır fakat dosyalar sunucunun, müşterinin erişemeyeceği bir kısmında depolanır. Eğer projenizi internette de yayımlamayı düşünüyor iseniz sunucu yöneticisiyle görüşün. MySQL'in kurulu olup olmadığını öğrenin. Access'te hatırladığınız gibi *.mdb dosyalarımızı projemiz içinde taşıyarak istediğimiz zaman kullanabiliyorduk. Fakat bu MySQL'de mümkün değil. Biraz daha açıklamamız gerekecek: MySQL veritabanı da Microsoft SQL Server gibi, dosyaları sunucuda C:\Program Files\MySQL\bin gibi bir klasör içinde tutar ve herhangi bir müşteri buraya ulaşamaz. Ayrıca bu dosyalar sistem dosyalarıdır ve doğrudan proje içinde kullanılamaz. Yani o klasördeki dosyalar ile bizim bir ilgimiz yok. IIS üzerine MySQL Server ve MyODBC Kurulumu Ben en güncel linkleri vereyim:
Adreslere girerek bir mirror seçin ve indirmeye başlayın. Dosyaların inmesi tamamlandıktan sonra MySQL 5.0'ı kuracağız. Mysql-5.0.24-win32.zip dosyasını açıp Setup.exe den kurmaya başlıyoruz. Çok ayar yapmaya gerek yok Next'e basarak geçebilirsiniz. Dosyaların kurulumu bittikten sonra "Would you like to configure MySQL Server now?" diye bir soru soracaktır. Yes diye cevaplayalım ve veritabanımızı yapılandıralım. Yine Next diyerek geçebiliyorsunuz. Kullanıcı adı ve şifre sorduğu zaman ikisine de "root" yazalım. Daha sonra devam edip kurulumu bitirelim. Daha sonra mysql-connector-odbc-3.51.12-win32.msi dosyasını açıp kuralım. Kurulumu bitirdikten sonra Denetim Masası->Yönetimsel Araçlar(Administration Tools)->Veri Kaynakları ODBC (Data Sources ODBC) bölümüne girelim. Kullanıcı DSN (User DSN) sekmesinde "Ad: mysql Sürücü(Driver):MySQL ODBC 3.51 Driver" gibi bir kayıt yok ise Ekle...(Add...) düğmesine tıklayalım. Listeden "MySQL ODBC 3.51 Driver" tıklayalım. (Eğer listede böyle bir öğe yok ise bilgisayarınızı yeniden başlatmanızı öneririm) İleri(next) düğmesine tıklayalım. Gelen Formda alanları şu şekilde dolduralım: Daha sonra Test Connection düğmesine tıklıyoruz ve "Success; connection was made!" mesajını aldıktan sonra OK düğmesine tıklıyoruz ve Tamam düğmesine tıklayarak ODBC Veri Kaynağı Yöneticisinden çıkıyoruz. (Bir sorun çıkarsa bilgisayarınızı baştan başlatın, mysql servisi hizmete girecektir. O zaman tekrar bu işlemleri yapmayı deneyin.) MySQL veritabanı arayüzü olmayan bir veri tabanıdır. Yönetmek için şunları bilgisayara kurmanızı öneririm: SQLYOG FREE EDITION SQL FRONT
VERİTABANINA İLK BAĞLANTIYI YAPMAK, TABLO EKLEMEK, VERİ EKLEMEK, LİSTELEMEK VE DİĞER İŞLEMLER Önce boş bir ASP dosyası yapalım ve aynen şu bağlantıyı oluşturalım:
Connection_DSN= "DRIVER={MySQL ODBC 3.51 Driver}; SERVER="&mysql_server&"; UID="&mysql_user&"; pwd="&mysql_pass&";db="&mysql_db&";" Response.Write "bağlantı kuruldu"
([MySQL][ODBC 3.51 Driver]Access denied for user 'root'@'localhost' gibi bir hata alıyor iseniz MySQL veritabanı kullanıcı adı ve şifrenizi yukarıdaki kodda uygun olarak doldurun. Eğer kurulumda k.adı ve şifre belirlemediyseniz mysql_user = "root" ve mysql_pass="" (boş) olarak bırakın. Büyük ihtimal bağlanacaktır.) Bağlantımız tamamlandı ise bir sorgu ile kendi veritabanımızı yapalım isterseniz.
Access teki veri türlerini hatırlıyor musunuz? Metin, Not, Sayı, Uzun Tamsayı, Evet/Hayır, Tarih/Saat... Şimdi MySQL'de sık kullanacağınız veri tiplerini görelim. Bu veri tiplerini Google'dan arayarak detaylı özelliklerini, limitlerini bulabilirsiniz:
Peki şimdi bir telefon defteri tablosunu nasıl yapabiliriz görelim. Eğer verdiğimiz SQL Front, SQLYOG gibi programlarla bağlanırsanız komutlar kullanmadan kendi tablolarınızı ve kendi veritabanınızı zahmete girmeden tasarlayabilirsiniz.Bu programlardan biriyle telefondefteri veritabanımıza bağlanalım ve sağ tıklayıp Yeni Tablo (New Table) üretelim: id : (primary key)(auto_increment) int(11) Bu tablonun SQL komutuyla yapımı şöyle olacaktır:
Bu komut ile de tablomuzu üretebiliriz. Burada dikkatinizi sorgu sonundaki Engine kısmı çekebilir. Bu, tablonun hangi veritabanı motoruyla yönetileceğini gösterir. InnoDB, MyISAM, ISAM, MEMORY, MRG_MYISAM gibi türleri vardır. Eğer kayıtlarınız on binleri bulmayacak ise InnoDB iyidir fakat çok kayıt bulunacak ise MyISAM'ı tavsiye ederim. Not: MySQL'de SQL sorgu satırının sonuna ";" (noktalı virgül) koymalısınız. Eğer tek satır sorgu yazıyorsanız buna gerek yoktur. Şimdi de birkaç kayıt eklemeye ne dersiniz?
Baglanti.Execute("INSERT INTO telefondefteri (isim,meslek,telefon) VALUES ('gürcan balci','insaat mühendisi','5334169988') ;") Baglanti.Execute("INSERT INTO telefondefteri (isim,meslek,telefon) VALUES ('kerim candan','berber','2625281611') ;") Response.Write "3 kayıt eklendi"
Do Until TelefonDefteriKayitlari.eof (<%=Kayit%>) İsim: <%= TelefonDefteriKayitlari("isim")%> (<%=TelefonDefteriKayitlari("meslek")%>) Telefon : <%=TelefonDefteriKayitlari("telefon")%> <%
(1) İsim: ahmet alp balkan (doktor) (2) İsim: gürcan balci (insaat mühendisi) (3) İsim: kerim candan (berber) Gördüğünüz üzere kayıtlarımız listelendi. Fakat ASP deki şu kod açma tarzını hatırladınız mı? Artık bu tarz recordset açmayı kullanmayacağız. Çünkü MySQL kullanırken bize hiçbir getirisi olmayacak. Önceden Rs.AddNew Rs.Update Rs.RecordCount Rs.Delete kullanırdınız. Ama artık bu yok. Bütün işlemlerinizi SQL Komutları ile yapacaksınız. Örneğin: Ekleme Komutu : INSERT INTO kisiler (‘isim','kayittarihi') VALUES (‘dilan fındıkçı','20060813201439');
Düzeltme Komutu:
Response.Write Toplamkisi("TOPLAM") %>
Bu komutları daha da araştırarak öğrenebilirsiniz. Biz yüzeysel olarak değindik. |