Delphi ile MySQL Bağlantısı Gönderen: DeFacto Tarih: 26 February 2006 03:52:06
Merhaba;
Zorlu Firebird macerasından sonra MySQL ile tanışmaya kara verdim ve İnternet'te bulabildiğim tüm kaynakları karıştırdım. Bulduklarımın çoğu parça parça konuyu anlatıyordu. Bu sitede Fatih kardeşimin makalelerini okuyunca tamam şimdi oldu dedim ve MySQL'i sadece kulaktan dolma duyan birisi olarak, Fatih kardeşimizin Veri Tabanına Giriş ve MySQL forum sayfalarındaki anlatımını adım adım takip ederek sorunsuzca MYSQL kuruldu ve ilk tablomu da oluşturdum.
Sıra geldi Delphi ile bağlantıya, ama o kısım ile ilgili bir konuya bu sitede rastlayamadım, 4 saat süren uğraştan sonra bölük pörçük bilgileri biraraya getirerek delphi ile olan irtibatı da tesis etmiş ve çok yorgun birisi olarak başkaları da aynı yolu izlemesin belki faydası olur diye Delphi ile nasıl bağlantıyı kurduğumu anlatmaya karar verdim.
(Çok iddialı olduğum söylenemez hatalarım varsa tecrübeli arkadaşlar lütfen düzeltsinler....)
Delphi ile bağlantı için önümüzde bir çok seçenek bulunmaktadır.Ben tecrübe ettiklerimi yazmak istiyorum. Windows XP Pro işletim sistemi ve Delphi 7 kullandığımı belirteyim bu arada.
1. Zeosdb componenti kullanarak (Ücretsiz)
http://sourceforge.net/projects/zeoslib/ 2. dbExpress componenti ile , zaten Delphi ile birlikte geliyor.
3. MyDAC (MySQL Data Access) (Ücretli) http://www.crlab.com/mydac/download.html (60 günlük deneme sürümü ve diğerleri)
4. ODBC Driver kullanarak BDE (TTable) veya ADO Componentleri kullanarak <http://dev.mysql.com/get/Downloads/MyODBC3/MyODBC-3.51.11-2-> win.exe/from/pick
ve diğerleri...
1. İlk önce herkesin çok methettiği ZeosDBO'ya atladım.(Nasıl indirilip yüklendiğini anlatmıyorum zaten çok da zor değil.) Ancak bir türlü connect olamayınca bunun nedeninin kullandığım MySQL 5.0 dan kaynaklanabileceğini, bu sürümün desteklenmediğini okuyunca MySQL 4.1 'i indirip kurup denedim ama o da sonuç vermedi 4.0 ve daha eski sürümleri denedim ve bağlantı gerçekleşti sanırım sürüm desteklenmeme olayı olsa gerek.Açıkçası MySQL'in eski sürümleri ile çalışmak bana hiç cazip gelmedi, ne yani 5 yıl sonra MySQL 7xx çıktığında biz hale 4.0 versiyonunu mu kullanacağız.
2. Sonra dbExpress içerisinde bulunan TSQLConnection bileşenini denedim,ben başarılı olamadım ama kısaca yapmanız gerekenleri anlatayım,bu bileşen dbexpmysql.dll ve LibmySql.dll'lerini kullanmaktadır. Aratırsanız ilkini Delphi dosyalarının olduğu klasörden birinde, ikincisini MySql klasörleri ile birlikte bulacaksınız. Bu iki Dll dosyasını çalışma(Aplication) klasörünüze kopyalayın.
TSQLConnection bileşeni forma indirildiğinde Object Inspektor'dan Connection Name olarak <MySQLConnection> seçilir. Driver Name vs. otomatik olarak dolar.Daha sonra Params özelliklerinden bağlantı için gerekli olanlar girilir
(MYSQL konusundaki örneği ele alacak olursak)
Driver Name : MySQL
HostName : localhost (veya siz nasıl tanımlamışsanız)
Database : Fatih (VT isminiz)
User Name : root (veya siz nasıl tanımlamışsanız)
Password : root (MySQL ilk kurulurken bize sormuştu)
Şimdi artık Connected özelliğini True yaptığımızda VT ile bağlantıyı yapmış olmamız lazım ama ne mümkün tutturmuş bir Libmysql.dll bulunamadı hatası daha ileri gidemiyorum. O Libmysql.dll dosyasını Windows/System ve Sysrem32 klasöründen tutunda, Borland altındaki kütüphaneye, çalışma klasörüne, VT 'nın olduğu Mysql altındaki klasöre, ne olur olmaz diye Borland Delphinin tüm alt klasörlerine ve daha bir çok saçma sapan yere kadar,anlayacağınız her yere kopyaladım belki bulur diye ama, bulamadı bir türlü. (Şimdi aklıma geldi benim MP3 lerin olduğu klasöre atsam yermi acaba...)
Sonra internet'te yaptığım araştırmada bu Component de MySQL 4.1 ve 5x sürümlerini desteklemiyormuş geç oldu ama onu da öğrenmiş oldum. (Bu arada biraz önce buldum
http://sadettinpolat.blogspot.com/2005/06/zengin-yedek-kulubesi-2.html adresine göz atın bir arkadaşımız şartları zorlamış kimbilir kaçıncı denemeden sonra bir çözüm üretmiş açıkçası ben denemedim)
3. dbExpress'te olmayınca sıra geldi MyDAC'a Allah aşkı için yüklenmesinden çalıştırılmasına kadar, söyleyecek hiçbirşey bulamadım pat diye çalıştı,hemen kendimce yaptığım 500.000 kayıtlık testde de bir problem çıkarmadı.Ama ücretli ve 60 günlük deneme sürümü ya 60 gün sonra.Başka bir yolu olmalıydı.
4. Ve benim Yolu ODBC Driver kullanarak bağlantı, tabiiki programı kuracağınız bilgisayarda da ODBC sürücüsünün yüklenmesi problemini doğuruyor ancak, daha önce defalarca test ettiğim BDE componenti ve özellikle ADO componenti ile sorunsuzca bağlanabilmem beni yeterince tatmin etti.Ve çok kolay...
Önce <http://dev.mysql.com/get/Downloads/MyODBC3/MyODBC-3.51.11-2-> win.exe/from/pick
adresinden MySQL ODBC Driverinı indirin...Ve sonra kolayca bilgisayarınıza kurun.
Sonra Denetim masasından, (Kontrol Panel) yönetim araçları içindeki Veri Kaynakları (ODBC) sunumcusunu çalıştırın (Tabii sizde varsa yoksa önce ODBC sürücüsünü yükleyin, emin olun bir gün mutlaka lazım olacak)
ODBC Sunumcusunda <Kullanıcı DSN> sekmesine gelin ve Ekle(Add) butonuna basın karşınıza bir liste çıkacak ve o listede biraz önce kurduğunuz MYSQL ODBC sürücüsünü seçin benim kullandığım <MySQL ODBC 3.52 Driver> idi. Bu yeni DSN tanımlamasına bir isim verin.Örnek olarak MySQL_ODBC_defacto diyelim.
Şimdi Delphi'ye geçip iki yoldan ilki olan ve çoğumuzun mutlaka kullandığı, BDE componentinde bir TTable nesnesi seçelim. ve bu nesnenin DatabaseName'i olarak biraz önce verdiğimiz MySQL_ODBC_defacto isminin listede olduğunu görmüş olmalıyız.Database Name seçtikten sonra, Table Name olarak karşımıza oluşturduğumuz MySQL tablolarımız gelecek istediğimizi seçip, Active özelliğini true yaptığımızda hata mesajı almadıysak bağlandık demektir. Artık diğer ayarları indexname vb. size uygun olarak yapılandırıp bir datasource ve dbgrid ile ilk denemenizi yapabilirsiniz.
Veya benim tercihim olan ADO componentlerinden olan bir ADO Connection nesnesini seçelim, nesnenin üzerinde çift tıkladığınızda Connection String oluşturma arayüzü gelecektir.İlk çıkan arayüz de <Build> butonuna basalım karşımıza çıkan listeden <Microsoft OLE DB Provider for ODBC Drivers> seçip <İleri> butonuna basalım.Karşımıza çıkan ekranda Veri Kaynakları seçme kutusunda az önceki oluşturduğumuz <MySQL_ODBC_defacto > kaynağını seçelim. Şimdi <Bağlantıyı Sına> (veya<Test Connection>) butonuna bastığımızda muzaffer olduğunuza dair mesajını aldıysanız iş bitti demektir.Sırasıyla OK'leyip işlemi tamamlayın. Bundan sonrası artık ADO konusu ancak kısaca anlatacak olursam ADO sekmesinden bir Table (veya Query), Data Access sekmesinde bir Data Source ve Data Controls sekmesinden bir dbGrid indirin. Table'i ADO Conecction'a Data Source'ı Table;'a ve dbGrid'i DataSource'a bağlayın. Tabloyu aktif yapın ne gördünüz.İşte 4 saatlik uğraşın mutlu sonu, hemen benim 500.000 lik text datalarımı atıyor ve deniyorum şimdilik problem görülmüyor.Umarım siz de problemsiz bağlanırsınız.
Tabiiki tecrübeli kardeşlerimiz Native bağlanma ile, BDE (Borland Data Engine) bağlantı ve ODBC bağlantı arasındaki gerek lokal çalışma gerekse ağ üzeri uygulamalarda avantaj ve dezavantajlarını anlatırlarsa (hız,erişim ve bilgi güvenliği,data yapısının sağlamlığı,VT'nın sapmalara uğraması,client terminallerde kurulum kolaylığı, lokal çalışmalar için setup dosyalarının boyutları yönleriyle) bizler için faydalı olur diye düşünüyorum...Artık huzur içinde yatabilirim lütfen saate bakarmısınız...
dbExpress ile Bağlantı Gönderen: DeFacto Tarih: 26 February 2006 14:08:31
(Önce aşağıdaki kısmı okuyunuz)
Az önce dbExpress ile de bağlantı gerçekleştirdim.Daha önce belirttiğim gibi Delphi 7 ile gelen dbExpress Cpmponenti MySSQL 4.1 ve 5x sürümlerini desteklemiyor, bunun için
http://crlab.com/dbx/download.html adresinden, <dbExpress driver for MS SQL Server version 3.00 [size 716 Kb]> indirip kurarsanız MySQl'in yeni versiyonlarını, bunun yanısıra transaction ve Sp desteklerinin de olduğunu görürsünüz.
Ayrıntılı bilgi almak isterseniz yukarıdaki URL'den <dbExpress driver for MS SQL Server revision history> seçin ürün gelişimini göreceksiniz, ayrıca
C:\Program Files\CoreLab\DbxMda\ReadMe.html ve
C:\Program Files\CoreLab\DbxMda\FAQ.html adreslerinden bu componentle ilgili ayrıntılı bilgi alabilirsiniz. İnceleyenlerin gözünden kaçmayacaktır. MyDAC componenti ile aynı firmanın ürünü ve tabiiki MyDAC ürününü ön plana çıkarmaktalar.
Yalnız bir kadı kızı durumu var yani ürün
Trial version, ancak incelemeye değer.
Bundan sonra Delphi tarafı pek zor değil, dbExpress Componentlerinden SQLConnection indirin, username ve password girip Connection Name olarak <MySQL (Core Lab)> seçin, params özelliklerini tanımladığınızda bağlantı gerçekleşecektir.
Bir tablo,datasource ve dbgrid nesnesi ile tablonuzu deneyebilirsiniz...
Ynt: Delphi ile MySQL Bağlantısı Gönderen: FetihlerFatihi Tarih: 27 February 2006 12:20:15
teşekkürler. inan hep aklımdaydı, ama bi türlü fırsat bulammadım.
zeos vee mySQL'in son şunu yazmış.
problem libmysql.dll'de.

mysql 4.1 versiyonundam sonra yeni dll'i kullanmanız gerekiyor. eğer zeos companenti kullanıyorsanız driverdan mysql 4.1 seçmelisiniz. ayrıca dll dosyası adı libmysql41.dll olmalı.
bağlanmak için direk mysql.exe'yi deneyin.
Kaynak
MySQL 4.1 ve 5.0 için ZeosDBO 6.5.x ile Delphi Bağlantısı Gönderen: DeFacto Tarih: 01 March 2006 20:37:19
Evet ZeosDb ile bağlantıyı aşağıdaki ilk yazımı yazdıktan sonra deneye deneye bende gerçekleştirdim. Sorun tamamen versiyon problemi.
Bu arada Fatih kardeşimin yazısından anladığım kadarıyla sorunun nasıl çözüldüğüne Mkysoft'un bu yanıtıyla tam kanaat getirememiş,(Yoksa bir site yöneticisi herhalde bir alıntıyı doğrudan koymak yerine daha açık bir dille yazabilirdi, yine de ilgisine teşekkür ederim) Nereden kanaat getirdim, çünkü ben de aynı durumdaydım Mkysoft'un diğer bir delphi sitesindeki bu yazısını ben çok daha önce okudum ancak ne demek istediğini tam olarak anlayamamıştım, yazdıkları kesinlikle doğru ancak yeterince açık değil bence.
Konulara cevap veren veya bir açıklama koyan bir çoğumuzun yaptığı bir hatadan kaynaklanıyor, şöyle ki, kendimiz konuya vakıf olduğumuz için okuyan herkesin bizim ile aynı paralelde düşündüğünü farzediyoruz ve bazı ayrıntıları atlıyoruz. Aynı hatayı ben de sıkça yapıyorum. Giriş yazısında zeosDBO komponentinin MySQL 5.0 ile uyumlu çalışmadığını belirtmiştim, oysa eklemem gereken önemli husus benim denediğim Zeos komponentinin en son kararlı sürüm olan <Zeosdbo 6.1.5 stable> sürümü olduğu idi. Bunu belirtmediğim için 6 ay sonra bu yazıyı okuyan bir kişi Zeos komponentinin kesinlikle MySQL 4.1 ve sonrasını desteklemediği kanaatına varabilir. Oysa durum hiç de öyle değil sayın Sergey Seroukhov (tek başına mı çalışıyor acaba) 10 Mart 2004 tarihli Zeosdbo Release 6.5.0 sürümünden itibaren MySQL 4.1 desteğini sağlamış.Her nekadar, hala alpha sürümleri de olsa, bu tarihten itibaren geliştirdiği 5 yeni sürümü denedim, ve MySQL 4.1 ve 5.0 sürümleri ile bağlantıyı gerçekleştirdim.
Hatamızı düzeltelim ve adım adım MySQL 4.1 / 5.0 ile ZeosDBO 6.5.x bağlantısını anlatalım artık :
MySQL ile bağlantı kısmını halletmiş olduğumuzu farzediyoruz.
1.Önce
http://sourceforge.net/project/showfiles.php?group_id=35994&package_id=28219 linkinden ZeosDBO 6.5.1 alpha sürümlerinden birisini indiriyoruz (Hangisi diye sormayın lütfen, basitçe VT bağlantısını linkte görülen 4 farklı 6.5.1 sürümüyle yaptım ancak, ayrınıtılı test yapmadığım için, bir sorunları ileride doğar mı bilemiyorum)
2.Herhangi bir klasörde indirdiğimiz Zip'li dosyayı açalım
3.Yeni açılan klasörlerden lib\MySQL altındaki 3 adet LibMySqlxxx.Dll dosyasını (Windows\system32) veya sizdeki işletim sistemine bağlı olarak (Winnt\system veya system32) klasörüne atalım
4. Daha sonra tekrar açtığımız Zeos klasöründen packages\delphi7 (veya sizin Delphi sürümünüz neyse o) klasöründeki sırasıyla, ama lütfen sırasıyla!!! Bunu ben demiyorum Sergey Bey diyor.
ZCore.bpl
ZParseSql.bpl
ZPlain.bpl
ZDbc.bpl
ZComponent.bpl
componentlerini kuralım.Tek tek kuruyorsanız bpl'ye çift tıkladığınızda Delphi açılır ve karşınıza çıkan Package arayüzünden Options seçeneğini seçin ve Usage Options bölümünden (Designtime and Runtime) radio butonunu seçin sonra sırasıyla Compile ve Install edin.Bu işlemi 5 bileşen için de yapın.
(Bu adım için yahu neden öyle yapıyorsun,orada ZeosDBO Borland Project Group duruyor onu çalıştırsana kardeşim her şeyi otomatik yapsın diyebilirsiniz.Ama her nedense bende sürekli problem çıkardılar ben de manuel yüklemeyi tercih ettim)
5. Açılan Zeos klasörünün altından packages\delphi7\bin klasöründeki dcu dosyalarını kopyalayıp nereye atıyoruz tabiiki bizim delphinin çalıştığı klasörün altındaki kütüphaneye yani değiştirmediyseniz Borland\delphiX\lib klasörüne yapıştırıyoruz.
6. Şimdi her ihtimale karşı Delphiyi kapatıp açalım karşımızda, bileşenler bölümünde Zeos Access sekmesi olması lazım, artık gerisini halledebilirsiniz sanırım, kısaca anlatalım:
bir TZConnection nesnesini forma indirelim, bu nesnenin özelliklerinden, ilk önce Protocol özelliğinden MySQL 4.1 seçelim(Sakın yok demeyin eski sürüm indirmişsiniz demektir), port hanesine değiştirmediysek 3306 girin, Username,Password,Hostname hanelerini ne belirlemişseniz ona göre doldurun. Eğer örnekleri takip ettiyseniz sırasıyla root,root,localhost olmalıdır.Catalog hanesinden seçeneklerden birisi bizim VT olarak görünüyor olmalıdır, onu seçip Databasename'i verdiğinizde artık Connected True yapabilirsiniz bir hata almadıysanız, gözünüz aydın...
Bir ZTable veya ZQuery , Datasource ve dbgrid nesnesiyle VT'nızı ZeosDBO bileşeni ile deneyebilirsiniz.
(Zeos değilde ben bu dbExpress'e kafayı taktım, MYDAC ile aynı firmadan gelen trial dbexpmda.dll dosyasını bir türlü kandıramadım 30 gün sonra sırıtıyor, acaba başka bir dll ile 4.1 ve 5.0 bağlantısı yapılabiliyor mu bilenlerin ilgisine lütfen)
Ynt: Delphi ile MySQL Bağlantısı Gönderen: FetihlerFatihi Tarih: 01 March 2006 20:54:48
@DeFacto
şuanda kittap vesilesi ile .net ile uğraşmaktayım. eski versiyonuyla bağlantı kurmuştuım ama eni versiyonuyla henüz deneme fırsatı bulamadım. test edip sonuç almadığım içinde tahmini konuşmak yanlış olur kanaatindeyim. zaman ayıramadığım içinde alıntıyı aynen aktardım.
dikkat etiysen sorulara verdiğim cevaplar hep link şeklinde. zaman buldukça makale yazarak faydalı olmaya çalışıyorum. piyasada soru-cevap şeklinde birçok site var. biziim amacımız derli toplu bir kaynak sağlamak. nitekim sizlerinde katkılarıyla bu yolda sağlam adımlarla ilerliyoruz.
Ynt: Delphi ile MySQL Bağlantısı Gönderen: veterdal Tarih: 26 September 2006 23:41:27
4. Daha sonra tekrar açtığımız Zeos klasöründen packages\delphi7 (veya sizin Delphi sürümünüz neyse o) klasöründeki sırasıyla, ama lütfen sırasıyla!!! Bunu ben demiyorum Sergey Bey diyor.
ZCore.bpl
ZParseSql.bpl
ZPlain.bpl
ZDbc.bpl
ZComponent.bpl
componentlerini kuralım.
demişsiniz......
iyi de *.dpk dosyaları var ama *.bpl dosyaso yok bu inen pakette ?? *.dpk dosyalarını da derleyip instal edemedim ? prblem ne olabilir ?
Ynt: Delphi ile MySQL Bağlantısı Gönderen: FetihlerFatihi Tarih: 27 September 2006 15:24:08
http://www.delphidunyasi.net/index.php?topic=792.0
Ynt: Delphi ile MySQL Bağlantısı Gönderen: suspect Tarih: 27 October 2007 11:49:14
kardes walla cok saol iki gündür ado baglantısı yapamıyodum meger ufak bir pürüzmüş cok saol
Ynt: Delphi ile MySQL Bağlantısı Gönderen: beyazcennet Tarih: 26 April 2008 03:26:48
arkadaşlar konuyu ben daha yeni gördüm , şimdi işime yaradı , ancak Design Time da bağlantı sağlıyorum ama run time çalışmadan hata alıyorum ve kırılıyor prog...Aldığım hata ise "property RequestLive does not exist" diyor , hiç açmıyor exe , napmam grekiyor acaba ? Hosting Serverımdaki SQL e bağlanıyorum bu arada...
iyi çalışmalar teşekkürler...
Ynt: Delphi ile MySQL Bağlantısı Gönderen: FetihlerFatihi Tarih: 26 April 2008 17:57:54
RequestLive diye bir özelliği bulamıyor

Ynt: Delphi ile MySQL Bağlantısı Gönderen: beyazcennet Tarih: 26 April 2008 18:15:24
tmm arkadaşlar buldum sorunu , ekledim o özelliği . bu sorunla karşılaşanlar aşağıdaki linke tıklasınlar,çözüm orda...
http://zeos.firmos.at/viewtopic.php?t=27&view=previous&sid=36d011759a7bd949a88fcd8aeeb958ef