mehmetduran.com - Paylaşmak Güzeldir...
MySql .Net Connector (MySql'i Visual Studio ve Linq ile Kullanma)
MySql .Net Connector (MySql'i Visual Studio ve Linq ile Kullanma)Bu yazımda Visual Studio ve bu araç ile hazırladığımız Net projelerinde MySql'i kullanmaya yarayan MySql Connector kütüphanesini tanıtmaya çalışacağım. Bu kütüphane bloğumda kullandığım bir kütüphane ve .Net ile MySql arasında bağlantı kurmamı sağlıyor. Bu kütüphanenin gelişimini sürekli takip edemedim ve daha önce burada yazmış olduğum gibi 5.2 versiyonunu kullanıyordum. Ancak geçen sürede bu kütüphane birçok gelişim göstermiş. En önemli gelişim ise Visual Studio'ya entegre edilmesi ve Data kontrolleri ile özellikle Linq işlemlerinde kullanılır olması. Bu yüzden bu kütüphaneyi tekrardan sizlerle paylaşmak istedim.

Bloğumda ve birçok projede kolay kullanımı olduğu için ve bana daha cazip geldiği için MySql'i tercih ediyorum. MySql ile bağlantı kurup, işlemlerimi gerçekleştirdiğim kütüphane olan MySql Connector kütüphanesinin son versiyonu ile artık Visual Studio ile ve Data kontrolleri ile de MySql'i rahatlıkla kullanabiliyoruz. Daha önce kullandığım 5.2 versiyonu ile Visual Studio'daki araçları kullanamıyorduk. Ancak şu anda mevcut olan 6.1 versiyonu ile Visual Studio'daki araçları kullanabilmekte, Visual Studio üzerinden MySql veritabanına bağlanıp, işlemler yapabilmekteyiz. Ayrıca Data kontrollerini ve Linq işlemlerini de kolaylıkla ve sorunsuzca yapabiliyoruz. Şimdi yeni versiyonu kurup, neler yapacağımıza sırayla göz atalım.

Öncelikle Connector'ün son versiyonunu buradan indirebiliriz. (Setup dosyasını içeren sekmeden - İkinci sıradaki link.) İndirkten sonra exe dosyasını çalıştırıp, gerekli kütüphanelerin kurulmasını sağlamalıyız. Kurulumdan sonra artık Visual Studio ile MySql'i kullanmaya başlayabilir ve Linq, Data kontrollerini kullanabiliriz.

Visual Studio ile MySql'e bağlanmak için aşağıdaki adımları izlemeliyiz.

MySql .Net Connector (MySql'i Visual Studio ve Linq ile Kullanma)

Bu adımları izleyip MySql veritabanımıza bağlandıktan sonra Server Explorer sekmesinde açtığımız bağlantıyı görebiliriz. Ayrıca veritabanı içinde yer alan özellikleri (tablo, stored procedure, vb.) görebilir, düzenleyebiliriz. Data kontrolleri ile MySql'i kullanmak için oluşturduğumuz ve açtığımız bağlantıyı kullanabiliriz. Herhangi data kontrolü seçtikten sonra, DataSource olarak MySql veritabanına bağlanabiliyoruz.

Aslında en önemli gelişme ve dikkatimi en çok çeken gelişme bu kütüphanenin Linq ile entegre edilmesi. Şimdi MySql'i Linq ile kullanmak için yapmamız gerekenlere bakalım.

Öncelikle projemizde Add New Item diyerek aşağıdaki resimdeki gibi Ado.Net Entity Model'i seçiyoruz.

MySql .Net Connector (MySql'i Visual Studio ve Linq ile Kullanma)

Bu seçimi yapıp Tamam dedikten sonra Tool bizlerden birkaç ayar yapmamızı istiyor. Bağlantı cümlesinin nerede tutulacağını, hangi veritabanının kullanılacağını belirliyoruz. Bu ayarları yapıp, Tool'u sonlandırdıktan sonra ilgili veritabanımızla ilgili Linq class'ı oluşmuş oluyor. Kullanmak için ise aşağıdaki gibi bir kodlama yapabiliriz.

MySql .Net Connector (MySql'i Visual Studio ve Linq ile Kullanma)

MySql veritabanını .Net ile kullanmak için hazırlanan bu kütüphane görüldüğü gibi oldukça kolaylık sağlıyor. Ancak yine de hata ve eksikleri var. Açık kaynak ve sürekli gelişiyor ve güncelleniyor. Ancak şu andaki durumu MySql'i kullanmak için yeter diye düşünüyorum. Umarım MySql kullanacaklar için faydalı olur.

Buradan Connector için gereken dosyaları görebilir ve indirebilirsiniz.
Buradan da şimdiye dek geliştirilen tüm versiyonların listesini görebilir ve indirebilirsiniz.

İyi Çalışmalar.
Mehmet Duran 14 Eylül Pazartesi 2009 29 31773 3,8
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Sitemin Kodlarını Yeniledim ve Yayınladım Asp.net MVC Areas (Birden Fazla Proje Kullanarak) Staj Hareketliliği Ternary Operatör Kullanımı (koşul ? doğru : yanlış) Kullandığım Email Sınıfı (Çoklu Mail ve Dosya Gönderimi)
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Salih Gedik 14 Eylül Pazartesi 2009 00:48 #1
Valla .Net'e ısındırıyorsun beni... Ama gelecek yaz yeni bilgisayar alana kadar sanırım Visual studio yu ya rüyamda ya senin çektiğin sslerde göreceğim. Teşekkürler
Mehmet Duran 14 Eylül Pazartesi 2009 00:56 #2
Umarım kısa sürede alırsın bilgisayarı. Almadığın sürece ben görüntü vermeye devam ederim. :D
Salih Gedik 14 Eylül Pazartesi 2009 00:59 #3
Babam okul acılınca bilgisayar hayatımı sonlandıracak. Kapanınca bir Mac aldıracağım :D
Hasan Alper Öcalan 14 Eylül Pazartesi 2009 04:52 #4
Bir arkadaşıma C#-MySql bağlantısı bu aralar lazımdı. Bunu yazman iyi oldu. Linki vereyim baksın burdan:)
Salih Ege 14 Eylül Pazartesi 2009 10:05 #5
Kardeşim bi öğrenci otomosyonu ile uğraşıyorum.Jquery ile usecontrol'e ajax isteğinde bulunacam not görüntüleme kısmında acaba belli bir kullanıcı sayısından sonra herhangi bi sıkıntı olurmu ?
zülküf küçüközer 14 Eylül Pazartesi 2009 12:38 #6
Süper bir gelişme olmuş Mysql kullananlar açısından. Linq-to-mysql kullanmak için taklalar atmak zorundaydık. Umarım linq ile binary data girişinde sorun çıkarmıyordur.
Mehmet Duran 14 Eylül Pazartesi 2009 17:13 #7
@Alper, umarım yararlı olur.

@Salih, eğer fazla kullanıcı olursa ve sunucu cevap verirse kodlarda bir sıkıntı olmaz. Eğer sunucu sağlam olmazsa zaten sistem tamamen açılmaz. Sunucu sağlamsa bir sıkıntı olmaz.

@zülküf, binary veri girişini Linq ile denemedim ama MySql ile daha önce yaptım ve sorunsuzca çalışıyor. Sonuçta aynı sorgu Linq ile çalışacağından bir sorun oluşturacağını düşünümüyorum.
Mehmet Kara 18 Eylül Cuma 2009 14:18 #8
Kardeşim senin jquery ile usercontrol uygulmalarında usercontrolllerin içinde .net compenentleri olduğunda render etmiyor nasıl aşabiliriz bu sorunu yada jquery de captch kontrolleri var mı? Şimdiden teşekkürler.
Mehmet Duran 18 Eylül Cuma 2009 20:17 #9
Sitemde konuyla ilgili olarak 2 adet yazı var. İlki sadece html kodlarını getiren bir yöntem. İkincisi ise tamamen render eden yöntem. İkinci yöntem ile user control'ün (componentler dahil) render edilmesi gerekir. Ki şu anda bu yöntemi birçok yerde kullanıyorum ve hiç sorun olmadı. Sadece jQuery ile Captcha uygulaması yapılsa da server tarafı olmadığı için pek güvenli olmayabilir. Ajax ile server taraflı bir capctha yapılabilir. Şu anda jQuery ile bildiğim buna benzer bir örnek yok.
mehmet kara 18 Eylül Cuma 2009 21:44 #10
yardım için teşekkürler peki ajax ile sayfa isteğinde bulunduğumuzda captch kontrolünde bir sıkıntı yaratırmı? şimdiden teşekkürler.
Mehmet Duran 19 Eylül Cumartesi 2009 05:28 #11
Sayfayı Ajax ile elde ettiğinde scriptler sorun çıkarabilir. Ancak çıkarmasa bile çalışmasında sıkıntı olabilir. Gerekli scriptleri Ajax ile çağırıp göstereceğin sayfada yüklemen gerekir.
abdullah 08 Ekim Perşembe 2009 15:37 #12
6 ve üzeri sürümlerinden stored procedur ile kullanırsanız parametre gönderirken sıkıntılar yaşadım. yani projede daha önceden olan kodlar sıknıtı yaşadı. command nesnemize parametre eklerken stored procedureki sıralama ile aynı olması gerekiyor. aksini dikkate almıyor yani @ ile başlayan parameterNameler bir işe yaramıyor. ancak 6 daha düşük sürümlerde bir sıkıntı ile karşılaşmadın aynı konuyla ilgili. 6 ve üzeri için bir bug mu yoksa cözümü varmı?
Mehmet Duran 08 Ekim Perşembe 2009 15:57 #13
Merhaba. Daha önce 5 sürümü ile fonksiyon ve stored procedure kullandım ve dediğin gibi bir sorunla karşılaşmadım. 6 sürümü ile henüz stored procedure ve fonksiyon kullanma imkanım olmadı. Ancak bu kütüphane tamamen açık. Kodları inceleyebilirsin. Hatanın nedeni gözden kaçmış basit bir hata olabilir. İlerde muhakkak çözülür. Ancak fırsat bulunca ben de bakmaya çalışacağım.
abdullah 09 Ekim Cuma 2009 09:14 #14
"This is expected behavior when you use 'use procedure bodies=false'. The reason is that when we don't have access to the procedure bodies the connector cannot determine what the parameters for a proc are. In that case, the connector has no choice but to use the parameters in the order they are added to the command. this is actually a fairly nice optimization. As long as you add the parameters in the right order you avoid a round trip to the server to get parameter names which speeds things
abdullah 09 Ekim Cuma 2009 09:24 #15
'use procedure bodies=false' anahtar kelimemiz. root yetkisi dışında veritabanına bağlandığımız zaman yukarıdaki ifadeyi ekliyerek proc tablosundaki işlemleri iptal ediyoruz. problemde burda başlıyor. ifadeyi kllanmaz isek root dışında stored procedur kullanama imkanımız yok. [mysql][proc] tablosuna erişme imkanımız yok. kendi db mizde ilgili tabloları oluşturup problemi çözme imkanımız olurmu bilmiyorum. müsait bir zamanda deniyecem. eğitim hayatınızda başarılar dileklerimle..
Mehmet Duran 09 Ekim Cuma 2009 20:00 #16
Bu soruna ben de en kısa sürede bakmaya çalışacağım. Temennin için teşekkür ederim.
mucahid1986 07 Haziran Pazartesi 2010 18:13 #17
Mehmet hocam merhaba 3 numaralı resimdeki alanda server name, user name veya parola alanlarına değerleri girmek için mousela tıkladığımda ekran kapanıyor. Connectörü ve mysql tekrardan kaldırıp denedim ama hep aynı hatayı veriyor. Sebebi ne olabilir acaba.
Mehmet Duran 08 Haziran Salı 2010 01:00 #18
Connector'ü kaldırıp, yeniden kurman yeterli olmamışsa sorun Visual Studio'dan kaynaklanıyor olabilir. Connector'u kaldırmadan tamir etmen veya Visual Studio'nun güncellemeleri (Service Pack) eksik ise güncellemelerini yükleyip yeniden deneyebilirsin.
mucahid1986 08 Haziran Salı 2010 09:27 #19
Connectörü kaldırıp tekrardan kurdum sorunsuzca çalıştı şu anda teşekkürler.
Metin 08 Eylül Çarşamba 2010 02:36 #20
Hocam localde mysqlconnector/net sorunsuz kullanıyorum. Ancak sunucuda hata veriyor. Sunucuda mysqlconnector/net çalıştırmak için yapılması gerekenler nelerdir. Ayrıntılı bahsedebilirseniz.
Mehmet Duran 08 Eylül Çarşamba 2010 09:07 #21
Merhaba Metin. Sunucuda problem yaşamamak için kullandığın connector'ün dll dosyasını sunucudaki projenin bin klasörü altına atman gerekiyor. Bu işlemi yaptığın takdirde problem olmaz.
metin 16 Eylül Perşembe 2010 03:36 #22
Projemde Ado.net Entity Data Model kullanarak MySql veritabanına bağlanıyorum. Localde bağlantımda sorun yok. Sayfam hatsız çalışıyor. Ancak sunucuda hata ile karşılaşıyorum. MySQL Connector Net 6.3.4 bilgisayarıma yükledimğimde C:\Program Files (x86)\MySQL\MySQL Connector Net 6.3.4\Assemblies dizininde oluşmuş olan dört adet dll i MySql.Data.CF.dll MySql.Data.dll MySql.Data.Entity.dll MySql.Web.dll bin klasöründe sunucuya atıyorum. MySql.Data.Entity.dll adlı dll yerel sunucumda da bin k
Mehmet Duran 16 Eylül Perşembe 2010 14:37 #23
Sunucuda yayın yaparken dll dosyalarını atmış isen sorun olmaması lazım. Eğer problem çıkıyorsa başka ayarlamaların eksik veya hatalı olmasından kaynaklanıyor olabilir. Hatanın kaynağını ve çözümünü bulmak için aldığın hatayı iyi incelemek lazım. Yazdıklarında hata ile ilgili bilgi olmadığı için şu anda söylenecek pek birşey yok.
Zuhal 01 Aralık Çarşamba 2010 15:11 #24
merhaba, öncelikle böyle bir makale yazdığınız için çok teşekkürler.Yazınızdakileri aynen uyguladım.linq ile sorgularımı yazdım. Ancak dataliste verileri çekemedim. breakpointle çalıştırdığımda, tabloları görebiliyorum ancak veriler null olarak geliyor. Sizce sebebi ne olabilir?Teşekkürler...
Mehmet Duran 11 Aralık Cumartesi 2010 00:02 #25
@Zuhal, tabloları eklemiş ve kullanıyor olabilirsin ama yazdığın kodları, bilgileri görmeden sorunun ne olduğunu söylemek zor.
ugur pala 22 Şubat Salı 2011 12:43 #26
selam mehmet kardeş ben web developer2010 a ekleyemedim mysql i. 6.3 versiyonu kuruyorum.add reference da mysql görünmüyor.dll leri PublicAssemblies klasörüne attım gösterdm zorla ama yinede add connection da göremiyorum mysql i ne yapmayılım sence
Mehmet Duran 08 Nisan Cuma 2011 22:21 #27
@ugur, kod ile ekledğin dll'leri kullanabilirsin ama sen wizard ile kullanmak istiyorsun sanırım. Bunun için wizard ve mysql için desteği olan paketleri bulup yüklemen gerekir.
Ferat 09 Nisan Cumartesi 2011 01:30 #28
Selamlar Mehmet bey, bende birçok connector indirdim kurdum lakim visual studio entegrasyon olmuyor, tekrar kurulum için change den baktığımda visual studio entegrasyon pasif geliyor, aktif ediyorum kuruyorum tekrar baktığımda ise yine pasif oluyor, işletim sistemim 32bit win7
Mehmet Duran 10 Nisan Pazar 2011 00:37 #29
@Ferat, önceki yorumumda belirttiğim gibi hem mysql ile hem de visual studio ile uygun olan kaynakları kurmak gerekir. Bunların çoğu ücretli. Bu yazımda paylaştığım örnek ücretsiz idi ve ekran görüntülerindeki gibi kullanmıştım. Ancak uzun süredir bu konuyla ilgilenemedim ve ne durumda olduğunu bilmiyorum. MySql'in sitesinden son versiyonları kontrol edersen daha net cevap bulabilirsin. Veya ücretli olan yazılımları tercih edebilirsin.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Şans bir uğraşının eseridir.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009