Banner

C Sharp MySql Database Class

Kategori C#
31.05.2010
3033 Okunma
C Sharp MySql Database Class

C Sharp MySql Database Class

Merhaba arkadaşlar. Bu aralar c# ile bir proje üzerinde çalışma imkanına kavuştum. Proje içinde mysql sunucusu ile çalışma imkanına kavuştum. Proje büyükçe, ve sorgulamalar karmaşıklaştıkça kod yazmaya çalışmak işkence halini alıyor. Ne olur ne olmaz diyerek SQL sorgulamalarını yapabileceğim küçük çapta bir class yazmak istedim. Ortayada böyle birşey çıktı 🙂 Nette c# ve MYSQL ile alakalı birçok site gezdim. Benzer birşeye rast gelmek istedim, gelemedim. iş başa düştü.Burada anlatacağım konuyu,araştırmaya başladığım andan bu yana olan konuyu kapsayacak şekilde en başından itibaren anlatmayı uygun gördüm.

Öncelikle bilgisayarda mysql sunucusunun bulunması gerekmektedir. Bunun için buradan içinde (Apache+mysql+ Php) yüklü olduğu wampserver adlı programı indiririp,bilgisayarımıza kuruyoruz.

Ardından MySql ile .net in birbiri ile aynı dili konuşmasını sağlayacak connector dosyasını şuradan indirip bilgisayarımıza kuruyoruz. Connectoru kurduktan sonra yeni proje açıyoruz.Proje açıldıktan sonra Visual Studio da Project>Add Reference dan “Browse” Kısmına geçip, Mysql.Data.dll dosyasını ekliyoruz.(Yol C:Program FilesMySQLMySQL Connector Net 6.2.2Assemblies büyk ihtimal bu dizinin içerisinde olacaktir.Eğer connectoru farklı bir dizine kurduysanız,o dizinde dosyayı aramanız mantıklı olacaktır.)

Bu işlemi de yaptıktan sonra proje dosyamıza mysql kütüphane dosyalarını eklemekle devam edebiliriz.
Mysql fonksiyonlarını kullanmamazı sağlamak amacıyla…

using MySql.Data;
using MySql.Data.MySqlClient;

Eğer formla ilgili işlem yapacaksanız. Aşağıdaki satırı projenize dahil etmeniz yeterli olacaktır.

using System.Windows.Forms;

Şimdi Mysql ile kod çalışmaya başlayabilir. Sorgulama işlemlerimizi gerçekleştirebiliriz. Aşağıda yazılmış olan class dosyası bulunmaktadir. Bu class dosyasını projenize dahil etmek için Projeye tıklayıp, Add New Item seçeneği seçilmelidir. Class dosyasını kopyalayıp, açılan class dosyasının içeriğini silip,buraya yapıştırıyoruz. Class dosyasını dahil ettikten sonra namespace ismini kendi projenizin namespace ismiyle değiştirmeniz gerekmektedirler. Bu çook önemli x)

C# Mysql Class

C# MySql Database Class

 

Class dosyasının docx şeklindeki halini indirmek için
tıklayınız. Dosyanın içerigini aldıktan sonra içeriği alıp yukarıda anlattıığım gibi işlemlerinizi gerçekleştirin. Ardından asıl projenizi yazacağınız form ekranına gelin. Class içinde db de insert,delete,update ve select işlemlerinizi gerçekleştirebilirsiniz.

Aşağıdaki örnekte kayit işlemiyle ilgili bir kod parçası görülmektedir. Peki bu kod parçası ne işe yarıyor ?

Sql Kayıt

Şimdi öncelikle yapmanız gerekenlerden en önemlisi class dosyası içindeki sunucuya bağlanmak için gerekli
argümanları girmeniz gerekmektedir. Nedir peki bunlar ❓

ServerName şu an bilgisayarımda Mysql sunucusunu barındırdığım için, localhost yazıyorum. Eğer wamp kurulumunu gerçekleştirdiyseniz, sizinde “localhost” yazmanız gerekir 🙂

Ardından kullandığınız sunucudaki database ismini, kullanıcı adi ve şifrenizi doğru bir şekilde girin 😉 Class dosyasında yapacağımız işlemler bununla sınırlı 🙂

Şimdi kod bloğuna dönecek olursak;

Öncelikle string tipinde sql değişkeni tanımlanmıştır. Bu nesnemizin bize döndereceği sql komutunu tutmamıza yarayacaktir. Ardından class dosyasının adını kullanarak “db” adında bir nesne oluşturuyoruz.

Mysql db=new MySql();

Ardından nesneyi kullanarak bağlantı kurmamızı sağlayan db_connect() fonksiyonunu çağırıyoruz.

db.db_connect();

Şimdi önemli olan kısma geliyoruz. insert_values fonksiyonu tablonuzdaki her alan için veri girmenizi sağlar. Örneğin;

db.insert_values(“kodu”,kodu.Text);

Tabloda bulunan kodu alanına Form da bir textin içeriğinde bulunan bilgiyi atamaktadir. 😉 Bu şekilde satırlarımızı
eklediğimizi düşünelim. Ardından

sql=db.sql_insert(“stok”);

satırıyla fonksiyona tablo ismimizi gönderdik. Ve bunun sonucunda oluşan sql cümleciğini yukarıda tanımladığımız sql değişkenine atadık. Şimdi ise sorgulama işlemimizi gerçekleştiriyoruz. İf içindeki db.sql_query(sql) ile sorgulama işlemimizi tamamladık, sonrasında (1 ise sorgu çalışmıştır) ise işlemi yapıp yapmadığına dair bir mesaj aldık

if (db.sql_query(sql) == 1)
{
MessageBox.Show(“Kayıt işlemi başarıyla tamamlandı.”, “Uyarı”, MessageBoxButtons.OK,MessageBox
Icon.Information);
}

Kaydetme için işlemler bu kadar 🙂 Şimdi SELCT ve UPDATE işlemleri için aşagıdaki kod parçalarını incelemenizi istiyorum 🙂

Sql Update

şimdi update işlemi için aşağıdaki kodun çalışmasını açıklamaya çalışalım.Öncelikle bir nesne oluşturup db ye nasıl bağlanacağını az önceki örneğimizde açıklamıştık. Devam edecek olursak 4. satırdaki kodumuzu açıklayalım.

dbSilStok.update_values(“stok_durum”,”0″);

Bu satırı tıplı kayit işlemindeki insert_values() değerleri için nasıl çoğalttıysak bunun içinde çoğaltabiliriz.Burada sadece tablodaki stok_durum alanı güncellenmek istenmektedir.

sql=dbSilStok.sql_update(“stok”,”kodu='” + kodu.Text +”‘”);

Yukarıdaki satirla birlikte string olarak tanımlanmış sql değişkenine sorgu atanır. stok tablo ismi,diğer kısım ise şarta bağlı olarka değiştirilmek istenen kısımdır.if içindeki fonksiyona sql değişkenini gönderip sorgulama yapmak istediğimizde işlem tamamlanmış olacaktır.

Aşağıda küçük bir kaydetme uygulaması mevcut. Bu uygulamayı bilgisayarınıza indirin. Connectoru ve wamp serverı yukarıda anlatıldığı gibi yükleyin. Klasor içindeki sql dosyasını sol alt köşede çalışan wamp iconuna sol tıklayarak, phpmyadmin seçeneğini çalıştırın. Ve gelen pencereden içeriği aktar seçeneğini seçin. Dosyayı seçtikten sonra Git düğmesine basın. Database oluşmuş olacaktır. Sonra uygulamayı çalıştırın. Eğer connector ile ilgili bir hata çıkarsa, MysqlData.dll dosyasını önce reference den silip sonra tekrar ekleyin. Uygulamayı çalıştırın.

Comments of this post

Kaptan

Kaptan
04 Haziran 2010

Güzel bir paylaşım olmuş… Emeğine sağlık.
Faydalı olur herkes için 🙂

katanasters

katanasters
13 Haziran 2010

Teşekkür ederim. Bir fikir vermesi açısından faydalı olacağını düşünüyorum. Yazı tamamen okunabilirse faydalı olabilir 😉

Saygılarımla

Gucci Shoes

Gucci Shoes
16 Haziran 2010

Thank you for posting this it was used as a source for a paper I am now writing for my finals. Thanks

Discount Gucci Store

katanasters

katanasters
27 Eylül 2010

I’m glad your business serves. Hope to see you.

Best regards …

atakan

atakan
31 Ekim 2010

güzel paylaşım remote connection hakkında detaylı bir bilgi verebilirmisiniz?

katanasters

katanasters
01 Kasım 2010

Selam Atakan,

1433 no’lu portu açıp, server ip’sini girmen yeterli. eğer default bir instance name varsa şu şekilde girilmeli (ipMSSQLSERVER2 gibi)

1- SQL Server Congiguration Manager’dan tcp ile erişmesine imkan ver.
2- firewall’dan 1433 no’Lu porta izin ver.
3- sonra ip’den bağlan mevcut kullanıcı veya sa kullanıcısı ile …

detaylar için bu makaleye bakmakta fayda var ;=)

http://support.microsoft.com/kb/265808

Saygılarımla

Emre

Emre
04 Ocak 2011

merhaba ;
ben emre
yeni c# kullanmaya başladım. yapmış olduğunuz bu mysql class inceledim. güzel bir çalışma olmuş.

benim sıkımtım data insert yaparken null gönderdiğim alanlar var (Örnek ID alanları) bunu yapamadım. string olarak “null” gönderiyor. bu konuda yardımcı olursanız sevinirim.

katanasters

katanasters
04 Ocak 2011

Merhaba Emre

Anladığım kadarıyla insert_values(“bilgi”,degisken) ; diye bir insert yaptığınızda bilgi alanına null atıyor. Veritabanınızdaki buraya göre konuşuyorum bilgi alanının tipi varchar,int olabilir. degisken ise int veya string olabilir. Alan yapılarının ile uyuşması gerekir.

Örneğin;

degisken “string tipinde olsun” (Programdan gelen bir değişken)

insert_values(“bilgi”,degisken) ;

Veritabanınızdaki bilgi alanı, varchar olarak tanımlanabilir . Uzunluğu degisken uzunlugundan uzun olmalı.

degisken “integer tipinde olsun” (Programdan gelen bir değişken)

insert_values(“bilgi”,degisken) ;

Veritabanınızdaki bilgi alanı, int olarak tanımlanabilir. Uzunluğu degisken uzunlugundan uzun olmalı.

Eğer bir alanınız var hiçbirşey girmiyorsanız belki şu şakilde olabilir

insert_values(“bilgi”,””) ;

Eğer bu alan auto increment ise,insert_values() fonksiyonunda yazmaya gerek olmayacaktır.

Saygılarımla

Emre

Emre
04 Ocak 2011

Çok teşekkür ederim
auto increment ise,insert_values() fonksiyonunda yazmaya gerek olmayacaktır. ile çözüm oldu

kolay gelsin

Anonim
22 Aralık 2011

emiğine sağlık kardeşim

katanasters

katanasters
26 Aralık 2011

teşekkür ederim. İşinize yaramasını diliyorum.:)

Saygılarımla

altan

altan
25 Aralık 2011

delete methodunu çözemedim bu methodu sql_adapter() ile mi kullanacağız
bir de sql_adapter() methoduna datagridview niye yolluyoruz,datagridview kullanmaktaki amacın ne

katanasters

katanasters
26 Aralık 2011

Sql_adapter() benim kendi projemde kullandığım bir fonksiyon. (Data Grid ile birlikte). Delete fonksiyonunu yalnız kullanmalısın.;) Fonksiyona argümanları göndermen yeterli olacaktır.

Saygılarımla

isimweb

isimweb
10 Ocak 2012

Proje içerisinde birden fazla veritabanına erişim sağlayanlar için class içerisinde nasıl bir değişiklik öneririsin.

katanasters

katanasters
10 Ocak 2012

Merhaba Hasan

Şöyle yapılabilir: Birden fazla db var ise, db_connect() fonksiyonuna class içinde mevcut olan bilgileri() parametre olarak gönderebilirsin. böylece bağlandığında göndersiğin parametrelere göre bağlantı sağlanacaktır. Gelen bu parametreleri de sınıf yapısına uygun olarak içerideki değişkenkenlere atamalısın.

db_connect(string server,string database,string user,string password) {
// mesela
this.server=server;

}

erkan

erkan
13 Eylül 2012

Merhaba paylaşım çok faydalı olmuş. Yalnız bir konuda fikrinizi almak istiyorum.

Bu sınıfın nasıl oluşturulacağını biliyorum fakat select fonksiyonunu nasıl kullanacağımı bilmiyorum. Mesela şöyle bir sorgumuz olsun “select * from musteriler” buradan gelecek sonuçlar hangi tipte olur ? (20 farklı müşteri olduğunu düşünün tek değer dönmeyecek yani) ve bunları nasıl ekranda göstereceğiz ? En basitinden mesajbox ile gösterebiliriz. örnekleyebilirsen sevinirim.

Projemi tamamlamaya calısıyorum. Select konusunda sorun yaşıyorum.

katanasters

katanasters
14 Eylül 2012

Merhaba Erkan Bey;

Kullanımı ile ilgili açıklama ile başlayalım isterseniz.

Select fonksiyonların kullanım sıralaması şu şekilde

1. sql_select()
2. sql_select_extra()

sql_select -> En basit select sorgusu yapılır. Yukarıdaki Select * from musteriler gibi.

sql_select(“musteriler”,”*”);

* çünkü sen musteriler tablosundaki bir tek kayıttın tüm bilgilerini istiyorsun.Ad bilgisi ist eseydin eğer tabloda oluşturduğun “ad” alanı için aşağıdaki kodu kullanacaktın.

sql_select(“musteriler”,”ad”);

select_sql_extra()-> Basit surguya “WHERE” takısı ile sorgu eklemek için kullanılır. Örneğin;

sql_select(“musteriler”,”*”);
string sql=sql_select_extra(“ad=Ali”);

string sql artık şu şekildedir.

SELECT * FROM musteriler WHERE ad=”Ali”;

Ardından bu string sql i aşağıdaki fonksiyona parametre olarak gönderiyorsun.

sql_query_select(sql);

Burdan dönecek olan değeri önceden oluşturduğun bir diziye atmalısın. Dizideki alanlar senin db deki alanlar ile aynı. Dizideki elemanları tek tek çekeceksin.

Dikkat etmen gereken burada oluşturduğun sorgular query edilmedikçe string, edildikten sonra array şeklini alıyor. Stringin içinide her şekilde Msg Box da gösterebilirsin.

Saygılarımla;

Mr. Green

Mr. Green
15 Mayıs 2013

Çok faydalı bir paylaşım.linq to sql kullanırken class örnekleri bulmak zor olmuyordu ama mysql için türkçe bir anlatımla türkçe bir kaynak görmek büyük şans. Neden artık birşeyler paylaşmıyorsunuz bilmiyorum ama en kısa zamanda tecrübelerinizden faydalanmak dileği ile.İyi günler

Sw4rr

Sw4rr
29 Mart 2017

Merhaba,
Select sorgusundan dönen verileri combobox’ a nasıl aktarabilirim

flexkod

flexkod
29 Mart 2017

Bir dizi oluşturup mesela “dizim” select sorgusundan dönen değeri dizim dizisine eşitleyiniz. Sonrasında foreach ile ComboBox içerisine aktarabilirsiniz.

yıldırım koyuncu

yıldırım koyuncu
14 Mayıs 2017

Ustan onn numara muhteşem birşey yapmışsın eline emeğine sağlık. Allah senden razı olsun.

flexkod

flexkod
14 Mayıs 2017

Rica ederim. Üzerinden 7 yıl geçmiş olmasına rağmen hala ziyaretçi alabiliyor. Birkaç tane linkin güncellenmesi gerekiyor. Saygılar.

Istanbul ithalat - ithal Çin ürünleri

Istanbul ithalat - ithal Çin ürünleri
10 Temmuz 2017

Merak ettiğim birşey çıktı karşıma şimdi.
Bu resime tıkladığımızda kocaman bir resim çıktı karşımıza. Bunu nasıl yaptınız hocam

flexkod

flexkod
10 Temmuz 2017

Ligtshot ile ekran görüntüleri alındıktan sonra alt alta resimleri birleştirmiştim sayın hocam. Eklentiler chrome için mevcut. Nimbus Screenshoot işinize yarayabilir.

Istanbul ithalat - ithal Çin ürünleri

Istanbul ithalat - ithal Çin ürünleri
11 Temmuz 2017

Cevap için teşekkür ederim hocam. Blogta yazanlara cevap vermeniz çok güzel. Tebrik ederim sizi.
İyi çalışmalar kolaylıklar dilerim size.
Saygılar.

flexkod

flexkod
11 Temmuz 2017

Rica ederim. Iyi gunler.

%d blogcu bunu beğendi: