jump to navigation

C# MySql Database Class Mayıs 31, 2010

Posted by katanasters in Genel Konular.
Tags: , , , , , , , , , , , , , , , ,
trackback

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 Files\MySQL\MySQL Connector Net 6.2.2\Assemblies 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

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.

Yorumlar»

1. Kaptan - Haziran 4, 2010

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

2. katanasters - Haziran 13, 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

3. Gucci Shoes - Haziran 16, 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 - Eylül 27, 2010

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

Best regards …

4. atakan - Ekim 31, 2010

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

katanasters - Kasım 1, 2010

Selam Atakan,

1433 no’lu portu açıp, server ip’sini girmen yeterli. eğer default bir instance name varsa şu şekilde girilmeli (ip\MSSQLSERVER2 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

5. Emre - Ocak 4, 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 - Ocak 4, 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

6. Emre - Ocak 4, 2011

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

kolay gelsin

7. Anonim - Aralık 22, 2011

emiğine sağlık kardeşim

katanasters - Aralık 26, 2011

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

Saygılarımla

8. altan - Aralık 25, 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 - Aralık 26, 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

9. isimweb - Ocak 10, 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 - Ocak 10, 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;

}


Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Follow

Get every new post delivered to your Inbox.