.Net ile MySQL kullanımı makalelerimizin ile projelerin de MySQL veritabanı kullanan birçok arkadaşımıza yardımcı olmayı amaçladık. Bu makalemiz de ise C# 3.0 ile birlikte gelen ve bence göz ardı edilemeyecek kadar önemli olan linq alt yapısını kullanarak MySQL veritabanı üzerinde nasıl işlem yapacağımızı inceleyeceğiz.
![Bb386977.DPUEADONETandLINQtoDSenusVS[1] Bb386977.DPUEADONETandLINQtoDSenusVS[1]](http://www.ibrahimatay.org/Content/UserFiles/Bb386977.DPUEADONETandLINQtoDSenusVS%5B1%5D.jpg)
LinqToDataSet; ADO. Net 2,0 alt yapısını temel alarak çalışan bir yapıdır; bu yapı kullanarak veritabanı da yapacağımız select sorguları linq ile yapmamızı sağlamaktadır. Şimdi bir Windows Application projesi açalım ve aşağıdaki form tasarımını yapalım.

(Tasarım da üç tane buton bir dataGridView nesnelinde oluşmaktadır.)
Şimdi veritabanında verileri çekmek için bir get() metodu oluşturalım ve form ‘un Load olayın da bu metodu çağralım.(verileri DataTable ‘a çekmek ve mysql veritabanına bağlanmak için MySql. Data dll projenize referans almanız gerekmektedir.)
|
private const string constr = "server=localhost;database=fabrika;user Id=root;pwd=123";//Baglanti adresi tanimladik
DataTable dtl = new DataTable();//bir cok yerde kullanacigimiz icin global de DataTable tanimladik
void GetData(){
using (MySqlConnection con = new MySqlConnection(constr))//baglati olusturduk
{
MySqlDataAdapter adapter = new MySqlDataAdapter("select*from personel", con);//DataAdapter ile sorguyu gonderdik
adapter.Fill(dtl);// Fill metodu ile verileri DataTable ' a yukledik
}
}
|
Şimdi Open Connection buton ‘un Click olayına girek global de tanımlamış olduğumuz datatable ‘ da sorgu oluşturarak dataGridView nesnesinde verileri görüntüleyelim.
|
private void btnConnection_Click(object sender, EventArgs e){
var sql = from p in dtl.AsEnumerable() select p;
// AsEnumerable metodu ile verileri linq sorulari ile sorgulaya kullanabiliyoruz
dataGridView1.DataSource = sql.AsDataView();
//AsDataView metodu ile verileri dataGridView nesnesine DataSource ozelligine set ettik
}
|
Şimdi ekran çıktısına ve yazdığımızın kodun durumuna bakalım.

Yazdığımız kodun doğru çalıştığını gördükten sonra Select And Where buton ‘ un click onayanına girerek Id numarasına göre filtreleme yapalım . Şimdi kodlarımızı görelim.
|
private void btnSelectAndWhere_Click(object sender, EventArgs e){
dataGridView1.DataSource = null;//dataGridView nesnesin Datasource ozelligini null yaparak bosaltik
var sql = from p in dtl.AsEnumerable()
where p.Field<int>("Id") == 2//linq sorgularinda kullandigimiz basit bir sorgulama gerceklesitirdik
select new //Anonymous seklinde yazarak kullandik
{
Ad = p.Field<string>("Ad"),
//gelen verilerin null olmasina binayen hata ile sonuclanmamasi icin Field yapisini kullaniyoruz
//p.Field<veri_turu>(kolon_Ad) seklinde tanimlaniyor
Soyad = p.Field<string>("Soyad"),
No = p.Field<int>("Id")
};
DataTable dt = new DataTable();//yeni bir DataTable olusturduk.
dt.Columns.Add("Id");
//Olusturulan dataTable icerisinde yeni kolonlar olusturduk
dt.Columns.Add("Ad");//ve Alanlara isilendilidi
dt.Columns.Add("Soyad");
foreach (var p in sql)//foreach dongusu kullarak yapmis oldugunuz sorgunu icinde dolasalim
{
dt.Rows.Add(p.No, p.Ad, p.Soyad);
//DataTable kayitlari ekliyoruz.
}
dataGridView1.DataSource = dt;//DataSource 'e DataTable set ederek dataGridView nesnesin de verileri goruz.
}
|
Şimdi kodun gördükten sonra çalıştıralım ve görelim.

Şimdi sıra geldi kayıt eklemeye ; yukarıda bahsettiğim gibi kayıt ekleme, silme ve güncelleme gibi işlemleri yapamaya bunları normal olarak MySql.Data nesnesinde yararlanarak yapacağız bu için bir tane Set metodu oluşturalım ve insert buton click olayı ile çağıralım.
|
private void Set(int Id, string Ad, string Soyad){
// daha onceki makalelerimizde de bahsetmis olduğumuz gibi veri ekleme işlemini gerçekleştireceğiz
using (MySqlConnection con = new MySqlConnection(constr))
{
con.Open();//Baglanti Aciktik
using (MySqlCommand cmd = new MySqlCommand("insert into personel values(@Id,@Ad,@Soyad)", con))//Sorguyu yolladik
{
cmd.Parameters.AddWithValue("@Id", MySqlDbType.Int32).Value = Id;//Alanlara iliskili olarak verileri ekledik
cmd.Parameters.AddWithValue("@Ad", MySqlDbType.VarChar).Value = Ad;
cmd.Parameters.AddWithValue("@Soyad", MySqlDbType.VarChar).Value = Soyad;
cmd.ExecuteNonQuery();//veritabanina etki ettik
}
con.Close();//Baglantiyi kapattik
}
}
private void btnInsert_Click(object sender, EventArgs e){
Set(3, "bora", "beken");
//Kayit ekleme islemini burada gerceklestiryoz
GetData();//verileri tekrar sorgulayarak dataGridView nesnesine yukledik
}
|
Şimdi kodun gördükten sonra çalıştıralım ve görelim.

Bu makalemizin de sonuna gelik. LinqToDataset ‘ in mysql veritabanı üzeride sadece select işlemlerini yapılması çok zayıf bir olanak olması ile birlikte internet yaptığım araştırma da DBLinq ve LightSpeed denilen uygulamaların VS yükleyerek de kullanabiliyorsunuz ama bence LinqToDataset diğer araçlara göre daha avantaj olduğunuz düşünüyorum. Çalışmanın yararlı olması dileği ile herkese kolay gelsin.