17 Eylül 2014 Çarşamba

DataTable içindeki kayıtları Linq ile Gruplayıp toplama işlemi yapma

var sonuc = from r in dtVeriler.AsEnumerable()
                             group r by new { xfield1 = r["field1"], xfield2 = r["field2"]} into g
                             select new
                             {
                                 SiraNo = g.Key.xfield1,
                                 Aciklama = g.Key.xfield2,
                                 Toplam = g.Sum(x => Convert.ToSingle(x["Toplam"]))
                             };

26 Mayıs 2014 Pazartesi

C# ile SQL Serverların Listesi

Bunun için ekrana bir buton koyup butonun onclick evetına aşağıdaki kodları yazıyoruz.

System.Data.Sql.SqlDataSourceEnumerator lst = System.Data.Sql.SqlDataSourceEnumerator.Instance;
DataTable dtSQLListesi = instance.GetDataSources();

Programın çalıştığı makine veya network içerisinde bulunan tüm sql serverlerin (2000/2005/2008/2012..)
bulunduğu server ismini ve instance ismini bir DataTable içerisine getirecektir.

21 Şubat 2014 Cuma

28 Ocak 2014 Salı

DataTable içerisindeki kayıtları distinct ile tekil hale getirme


var stsil =
dtLISTE.AsEnumerable().Select(row => new {dyeri = row.Field<string>("DOGUMYERI")})
.Distinct();
 

26 Ocak 2014 Pazar

devexpress TileControl kullanımı

Toolbar da bulunan Navigation & Layout sekmesindeki TileControl kontrolü ile Windows 8 menüsüne benzer menüler yapmanız mümkündür. Bunun için yapmanız gerekenler çok basit

1. Formunuza bir tane TileControl kontrolü ekleyin.
2. Eklediğiniz kontrolü tıklayıp Mouse un sağ tuşuna basarak Add Group seçeneği ile bir grup ekleyin.
3. Eklediğiniz grubu seçip (Mouse ile tıklayıp) Mouse un sağ tuşuna basarak grup içerisine Add Item veya Add Large Item seçeneklerine basarak menü tuşlarını oluşturup kullanabilirsiniz. Kaç tane butona ihtiyacınız varsa o kadar eklemeniz yeterli.
4. Her buton içerisine Image ve text metin yazmanız mümkün (buton kontrolü gibi)


Eğer bu işlemi menüden değilde kodlar ile yapmak isterseniz.

1. Ekrana bir tane buton ve bir tane TileControl kontrolü ekleyip TileControl içerisine Add Group ile bir tane grup ekleyin.

2. Eklediğimiz butonu çift tıklayarak içerisine bu grup içerisinde olmasını istediğimiz itemleri ekleyen kodlarımızı aşağıdaki şekilde yazın.

DevExpress.XtraEditors.TileItem tus1 = new DevExpress.XtraEditors.TileItem();
tus1.Name = "Tus1";
tus1.Text = "kam";
tus1.ItemClick += new DevExpress.XtraEditors.TileItemClickEventHandler(tus1_ItemClick);
tileGroup1.Items.Add(x1);

private void Tus1_ItemClick(object sender, DevExpress.XtraEditors.TileItemEventArgs e)
{
            MessageBox.Show(e.Item.Name);
}

23 Ocak 2014 Perşembe

Devexpress gridControl ü yazıcıya yazdırma

Yeni bir proje açıp formumuzun üzerine bir tane GridControl bir tane Button kontrolü ekleyelim.
butonnun click eventina aşağıdaki kodları yazalım.

 
SqlConnection sc = new SqlConnection(@"Server = server_adi; user = sql_kullanici_adi; pwd = sifreniz; database = veri_tabani_adi;");
 
 
SqlCommand cmd = new SqlCommand("Select * from Musteriler ", sc);
DataTable dtCariler = new DataTable();
sc.Open();
dtCariler.Load(cmd.ExecuteReader());
gridControl1.DataSource = dtCariler;

//sorgu sonucunda dönen tüm kolonları gridview içerisinde görüntülenmesini aşağıdaki kod sağlar
gridView1.PopulateColumns();
gridView1.Columns[0].Caption = "Müşteri Kodu";

 
gridView1.Columns[1].Caption = "Müşteri Adı";
gridView1.Columns[2].Caption = "Müşteri Telefonu";
sc.Close();
 
 
 
Formumuza ikinci bir buton ekleyip onun click eventınada aşağıdaki kodu yazalım

gridControl1.ShowPrintPreview();
 
 
  
 
 


 

20 Ocak 2014 Pazartesi

LINQ where

Linq ile kayıtları filtrelemek için where kelimesi kullanılabilir.

 public class Kayit
 {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
}
yine bir buton ve datagridview ekleyip forma butonun click eventına

            List<Kayit> KayitListesi = new List<Kayit>
            {
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
            //A ile başlayan isimleri seçer.
            var liste = from x in KayitListesi where x.isim.StartsWith("A") select x;
            dataGridView1.DataSource = liste.ToList();

            //ismi 5 harften oluşan kayıtları seçer
            var liste = from x in KayitListesi where x.isim.Length == 5 select x;
            dataGridView1.DataSource = liste.ToList();
           //sonu i ile biten isimleri seçer.
            var liste = from x in KayitListesi where x.isim.EndsWith("i") select x;
            dataGridView1.DataSource = liste.ToList();

IENumerable - LINQ - Take - Skip

Formumuza bir buton bir datagridview koyalım.
        public class Kayit
        {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
        }
       
        butonumuzun click eventına

            List<Kayit> KayitListesi = new List<Kayit>
            {
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
IEnumerable<Kayit> liste = KayitListesi.Take(4); //ilk 4 kaydı alır.
dataGridView1.DataSource = liste.ToList();

IEnumerable<Kayit> liste = KayitListesi.Skip(2); //ilk 2 kayıttan sonraki kayıtları alır            dataGridView1.DataSource = liste.ToList();

17 Ocak 2014 Cuma

LINQ ile kayıtlarda SUM, MAX,MIN kullanımı

1. Formumuz üzerine bir tane datagridview bir tane button ekleyelim. 
2. F7 tuşuna basarak kod yazım ekranına geçelim.
3. Aşağıdaki şekilde bir class yazalım.
        public class Kayit
        {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
        }
4. Form üzerindeki butonumuzu tıklayıp içine
           //öncelikle Kayit tipinde bir Generic List tanımlayıp içerisini aşağıdaki şekilde dolduruyoruz.
            List<Kayit>  KayitListesi = new List<Kayit>
            { 
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
            var liste = from x in KayitListesi select x.yasi;
            MessageBox.Show(liste.Sum().ToString());
            MessageBox.Show(liste.Min().ToString());
            MessageBox.Show(liste.Max().ToString());
            MessageBox.Show(liste.Count().ToString());
            MessageBox.Show(liste.Average().ToString());
 
 

LINQ group kullanımı

Amacımız butona basıldığında List koleksiyonumuzda bulunan kayıtlarımızı LINQ yardımı kullanarak datagridview üzerinde görüntülemek.

1. Formumuz üzerine bir tane datagridview bir tane button ekleyelim. 
2. F7 tuşuna basarak kod yazım ekranına geçelim.
3. Aşağıdaki şekilde bir class yazalım.
        public class Kayit
        {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
        }
4. Form üzerindeki butonumuzu tıklayıp içine
           //öncelikle Kayit tipinde bir Generic List tanımlayıp içerisini aşağıdaki şekilde dolduruyoruz.
            List<Kayit>  KayitListesi = new List<Kayit>
            { 
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
            // KayıtListesi koleksiyonundaki kayıtları doğum yerine göre gruplayarak liste değişkenine aktarmak için group ifadesini kullanıyoruz.
            var liste = from x in KayitListesi  group by  x.dyeri;
            // ve datagridview içerisinde aşağıdaki şekilde görüntülenmesini sağlıyoruz.
            dataGridView1.DataSource = liste.ToList();

dediğimizde datagridview içerisinde sadece
Bursa
İzmir
Van
ifadesi görünür.

eğer gruplanan veriyi sıralamak istersek aşağıdaki şekilde yapabiliriz.

            var liste = from x in KayitListesi  orderby x.dyeri descending group by  x.dyeri;

hem gruplama, hem sıralama hemde filitre konulabilmektedir.

           var liste = from x in KayitListesi  orderby x.dyeri descending where x.cinsiyeti == "Erkek" group by  x.dyeri;

LINQ where kullanımı

Amacımız butona basıldığında List koleksiyonumuzda bulunan kayıtlarımızı LINQ yardımı kullanarak datagridview üzerinde görüntülemek.

1. Formumuz üzerine bir tane datagridview bir tane button ekleyelim. 
2. F7 tuşuna basarak kod yazım ekranına geçelim.
3. Aşağıdaki şekilde bir class yazalım.
        public class Kayit
        {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
        }
4. Form üzerindeki butonumuzu tıklayıp içine
           //öncelikle Kayit tipinde bir Generic List tanımlayıp içerisini aşağıdaki şekilde dolduruyoruz.
            List<Kayit>  KayitListesi = new List<Kayit>
            { 
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
            // KayıtListesi koleksiyonundaki kayıtlardan doğum yeri Bursa olan kayıtları liste değişkenine aktarmak için where ifadesini kullanıyoruz.
            var liste = from x in KayitListesi  where x.dyeri = "Bursa" select x;
            // ve datagridview içerisinde aşağıdaki şekilde görüntülenmesini sağlıyoruz.
            dataGridView1.DataSource = liste.ToList();

Eğer birden fazla şart kullanılacak ise araya gerekli bağlaçları ekleyerek birden fazla koşul belirtebiliriz.
Mesela 20 yaşından büyük Erkeklerin listesini alabilmek için;
    var liste = from x in KayitListesi where x.cinsiyeti == "Erkek" && x.yasi > 20 select x;

Koşula ek olarak orderby ifadesi ile sıralama yapmakta mümkündür.
    var liste = from x in KayitListesi where x.cinsiyeti == "Erkek" && x.yasi > 20 orderby yasi select x;


LINQ orderby kullanımı

Amacımız butona basıldığında List koleksiyonumuzda bulunan kayıtlarımızı LINQ yardımı kullanarak datagridview üzerinde görünülemek.

1. Formumuz üzerine bir tane datagridview bir tane button ekleyelim. 
2. F7 tuşuna basarak kod yazım ekranına geçelim.
3. Aşağıdaki şekilde bir class yazalım.
        public class Kayit
        {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
        }
4. Form üzerindeki butonumuzu tıklayıp içine
           //öncelikle Kayit tipinde bir Generic List tanımlayıp içerisini aşağıdaki şekilde dolduruyoruz.
            List<Kayit>  KayitListesi = new List<Kayit>
            { 
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
            // KayıtListesi koleksiyonundaki kayıtların hepsini yasi degiskenindeki değerine göre küçükten büyüğe sıralayarak liste değişkenimize aktarıyoruz.
            var liste = from x in KayitListesi  orderby x.yasi select x;
            // ve datagridview içerisinde aşağıdaki şekilde görüntülenmesini sağlıyoruz.
            dataGridView1.DataSource = liste.ToList();

yasi küçükten büyüğe göre sıralayabilmek için
       var liste = from x in KayitListesi orderby x.yasi select x;

yasi büyükten küçüğe göre sıralayabilmek için
       var liste = from x in KayitListesi orderby x.yasi descending select x;

doğum yeri ve isme göre sıralama yapabilmek için
       var liste = from x in KayitListesi orderby x.dyeri, x.isim descending select x;

şeklinde kullanımları mümkündür.

Linq Örnekleri - 1

Hem unutmayalım hemde lazım olduğunda çabuk bulabilmek için basit linq örneklerini bloga eklemek istedim.
Çok basit bir örnek ile yola çıktım.

Amacımız butona basıldığında List koleksiyonumuzda bulunan kayıtlarımızı LINQ yardımı kullanarak datagridview üzerinde görünülemek.

1. Formumuz üzerine bir tane datagridview bir tane button ekleyelim. 
2. F7 tuşuna basarak kod yazım ekranına geçelim.
3. Aşağıdaki şekilde bir class yazalım.
        public class Kayit
        {
            public string isim { get; set; }
            public string dyeri { get; set; }
            public string cinsiyeti { get; set; }
            public int yasi { get; set; }
        }
4. Form üzerindeki butonumuzu tıklayıp içine
           //öncelikle Kayit tipinde bir Generic List tanımlayıp içerisini aşağıdaki şekilde dolduruyoruz.
            List<Kayit>  KayitListesi = new List<Kayit>
            { 
                new Kayit {isim = "Ali", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 20},
                new Kayit {isim = "Ayşe", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 10},
                new Kayit {isim = "Veli", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 30},
                new Kayit {isim = "Cem", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 15},
                new Kayit {isim = "Can", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 18},
                new Kayit {isim = "Mine", dyeri = "İzmir", cinsiyeti = "Bayan", yasi = 18},
                new Kayit {isim = "Oya", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 11},
                new Kayit {isim = "Metin", dyeri = "Bursa", cinsiyeti = "Erkek", yasi = 23},
                new Kayit {isim = "Ayça", dyeri = "Bursa", cinsiyeti = "Bayan", yasi = 25},
                new Kayit {isim = "Ayşe", dyeri = "Van", cinsiyeti = "Bayan", yasi = 34}
            };
            // KayıtListesi koleksiyonundaki kayıtların hepsini liste değişkenimize aktarıyoruz.
            var liste = from x in KayitListesi  select x;
            // ve datagridview içerisinde aşağıdaki şekilde görüntülenmesini sağlıyoruz.
            dataGridView1.DataSource = liste.ToList();











16 Ocak 2014 Perşembe

Devexpress gridControl kolonları ile çalışmak

Yeni bir proje açıp formumuzun üzerine bir tane GridControl bir tane Button kontrolü ekleyelim.

butonnun click eventina aşağıdaki kodları yazalım.
SqlConnection sc = new SqlConnection(@"Server = server_adi;                                                                   user = sql_kullanici_adi;                                                                   pwd = sifreniz;                                                                   database = veri_tabani_adi;");SqlCommand cmd = new SqlCommand("Select * from  Musteriler ", sc);DataTable dtCariler = new DataTable();sc.Open();dtCariler.Load(cmd.ExecuteReader());
gridControl1.DataSource = dtCariler;//sorgu sonucunda dönen tüm kolonları gridview içerisinde görüntülenmesini aşağıdaki kod sağlar
gridView1.PopulateColumns();   
gridView1.Columns[0].Caption = "ilk kolonun başlığı";
gridView1.Columns[0].Width = 200; //kolon genişliği
gridView1.Columns[0].Visible = true;  //kolonun görüntülenip görüntülenmeyeceği. 
sc.Close();

Devexpress gridControl içerisinde kayıtları görüntüleme

Yeni bir proje açıp formumuzun üzerine bir tane GridControl bir tane Button kontrolü ekleyelim.

butonnun click eventina aşağıdaki kodları yazalım.

SqlConnection sc = new SqlConnection(@"Server = server_adi;
                                                                   user = sql_kullanici_adi;
                                                                   pwd = sifreniz;
                                                                   database = veri_tabani_adi;");
SqlCommand cmd = new SqlCommand("Select * from  Musteriler ", sc);
DataTable dtCariler = new DataTable();
sc.Open();
dtCariler.Load(cmd.ExecuteReader());
gridControl1.DataSource = dtCariler;
gridView1.PopulateColumns();   //sorgu sonucunda dönen tüm kolonları gridview içerisinde görüntülenmesini sağlar.sc.Close();

Sonraki çalışmamızda GridControl ile ilgili biraz daha detaya gireceğiz.

15 Ocak 2014 Çarşamba

Formu içerinde tuş kombinasyonlarına göre işlem yapma (Alt , Ctrl ...)

Bazen form içerisinde bir veya birden fazla tuşa basarak işlem yapmak isteyebiliriz. Bu durum da öncelikle formun keypreview özelliğini true yapıp sonra keydown eventına aşağıdaki kodları yazmamız yeterli olacaktır.

if (e.KeyCode == Keys.V)
{
    MessageBox.Show("V Tuşuna basıldı");
}

if (e.KeyCode == Keys.V && e.Alt)
{
    MessageBox.Show("Alt V Tuşuna basıldı");
}

if (e.KeyCode == Keys.V  && e.Ctrl )
{
    MessageBox.Show("Ctrl V Tuşuna basıldı");
}

if (e.KeyCode == Keys.V && e.Alt && e.Control)
{
    MessageBox.Show("Ctrl Alt V Tuşuna basıldı");
}

9 Ocak 2014 Perşembe

DataGridView içerisinde seçili kaydın kolon değerleri nasıl alınır ?

dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells["kolonadi"].Value.ToString() ifadesi bulunduğumuz satırdaki belirtilen kolonun değerini verir.

 

8 Ocak 2014 Çarşamba

DataTable ı dolduran örnek method

Windows formunu açıp editör kısmına aşağıdaki kodları yazıyoruz.
       SqlConnection sc = new SqlConnection("Server = server_adı;
                                                                      user = sql_kullanıcı_adı;
                                                                      pwd = şifresi;
                                                                     database = veri_tabanı;");
        public Form1()
        {
            InitializeComponent();
        }
        private static DataTable GetData(string sorgu, SqlConnection baglanti)
        {
            DataTable dtGecici = new DataTable();
            SqlCommand cmd = new SqlCommand(sorgu, baglanti);
            if (baglanti.State == ConnectionState.Broken ||
                baglanti.State == ConnectionState.Closed) baglanti.Open();
            dtGecici.Load(cmd.ExecuteReader());
            cmd.Dispose();
            return dtGecici;
        }


veya SqlDataAdapter ile aşağıdaki şekilde de yapılabilir.

   private static DataTable GetData(string sorgu, SqlConnection baglanti)
        {
            DataTable dtGecici = new DataTable();
            SqlDataAdapter sda = new SqlDataAdapter(sorgu, baglanti);
            if (baglanti.State == ConnectionState.Broken ||
                baglanti.State == ConnectionState.Closed) baglanti.Open();
            sda.Fill(dtGecici);
            sda.Dispose();
            return dtGecici;
        }


form üzerine bir tane dataGridView bir tane buton ekleyip click eventına (butonu çift tıklayıp açılan ekrana) aşağıdaki kodları yazarak methodumuzu kullanabiliriz.

 DataTable dtYeni = GetData("Select * FROM musteriler", sc);
 dataGridView1.DataSource = dtYeni;





Veritabanından Okunan Kayıtları DataTable içerisine alma

SqlConnection sc = new SqlConnection(@"Server = server_adi;
                                                                   user = sql_kullanici_adi;
                                                                   pwd = sifreniz;
                                                                   database = veri_tabani_adi;");
SqlCommand cmd = new SqlCommand("Select * from  Cariler ", sc);
DataTable dtCariler = new DataTable();
sc.Open();
dtCariler.Load(cmd.ExecuteReader());
dataGridView1.DataSource = dtCariler;
sc.Close();

veya SqlDataAdapter kullanılarak da aşağıdaki şekilde yapılabilir


SqlConnection sc = new SqlConnection(@"Server = server_adi;
                                                                   user = sql_kullanici_adi;
                                                                   pwd = sifreniz;
                                                                   database = veri_tabani_adi;");
SqlDataAdapter sda = new SqlDataAdapter("Select * from  Cariler ", sc);
DataTable dtCariler = new DataTable();
sc.Open();
sda.Fill(dtCariler);
dataGridView1.DataSource = dtCariler;
sc.Close();

6 Ocak 2014 Pazartesi

XML dosyasını DataTable a aktarma

            DataTable dt = new DataTable();
            dt.ReadXmlSchema(@"c:\isimler.xml");
            dt.ReadXml(@"c:\isimler.xml");
            dataGridView1.DataSource = dt;


DataTable ı kayıt deseni ile birlikte xml olarak kayıt etme

dtisim.WriteXml(@"c:\isimler.xml", XmlWriteMode.WriteSchema);

DataTable ı XML olarak kayıt etme

dtisim.WriteXml(@"c:\isimler.xml");

DataView deki kayıtları DataTable a aktarma

             DataView dv = new DataView(dtisim);
            dv.RowFilter = "Dyeri = 'Bursa'";
            DataTable dtYeni = dv.ToTable(true);
            dataGridView1.DataSource = dtYeni;

DataView içerisinde kayıt arayıp bulma

            DataView dv = new DataView(dtisim);  //dtisimi daha önceki yayınlardan alıp oluşturabilirsiniz.
            dv.Sort = "Adi, Dyeri";   //Arama yapabilmek önce sarayacağımız alanlara göre sıralamamız gerekir
            DataRowView[] kyt = dv.FindRows(new Object[] {"Mine","Bursa"});
            foreach (DataRowView dr in kyt)
            {
                MessageBox.Show(dr["SiraNo"].ToString());
            }

DataTable ı DataView e aktarma

DataTable daki kayıtları dataview e aşağıdaki şekilde aktarıp DataView in RowFilter özelliğini kullanarak kayıtları filtrelememiz mümkündür.

            DataView dv = new DataView(dtisim);
            dv.RowFilter = "Yasi > 25";
            dataGridView1.DataSource = dv;

5 Ocak 2014 Pazar

DataTable Sum,, Avg, Count, Max, Min Kullanımı

            DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.Columns.Add("Yasi", typeof(int));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
            DataColumn kolon = new DataColumn();
            kolon.ColumnName = "YasToplami";
            kolon.DataType = typeof(string);
            kolon.Expression = "Sum(Yasi)";  //Sum ile alanları Yasi alanını toplar.
            //sum yerine Sum,Avg,Min,Max,Count,StDev,Var  da kullanılabilir.
            dtisim.Columns.Add(kolon);
           


            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            kayit["Yasi"] = 20;
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            kayit["Yasi"] = 30;
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir",25 });

DataTable Expression IIF Kullanımı

            DataTable dtisim = new DataTable();
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.Columns.Add("Yasi", typeof(int));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;

            // Yeni bir kolon tanımladık ve expression özelliğinde iif cümlesi kullandık.
            DataColumn kolon = new DataColumn();
            kolon.ColumnName = "YasToplami";
            kolon.DataType = typeof(string);
            kolon.Expression = "IIF(Yasi>=50,'Ortayaş', IIF(Yasi>=30,'Genç','Çocuk'))";
            dtisim.Columns.Add(kolon);
           
            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            kayit["Yasi"] = 20;
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            kayit["Yasi"] = 30;
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir",25 });

DataTable Expression Özelliği

Expression özelliği tanımlı bir kolonda girilen veriler göz önüne alınarak hesaplama yapılıp kullanılan bir özellik kazandırılmış olur.

            DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.Columns.Add("Yasi", typeof(int));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
            DataColumn kolon = new DataColumn();
            kolon.ColumnName = "YasToplami";
            kolon.DataType = typeof(int);
            kolon.Expression = "Yasi * 3";   //Girilen yas rakamını 3 ile çarparak Yeni kolona veri girilmiş olur.
            dtisim.Columns.Add(kolon);
           
            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            kayit["Yasi"] = 20;
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            kayit["Yasi"] = 30;
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir",25 });

DataTable ı sıralamak

          DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
            dataGridView1.DataSource = dtisim;
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.Add(kayit);
            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            dtisim.Rows.Add(kayit);
            dtisim.Rows.Add(new object[] {null,"Can","İzmir" });
            //araya satır ekleme
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Mine";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.InsertAt(kayit, 1);


           // Dyeri Bursa olan kayıtları SiraNo sunu büyükten küçüğe sıralar.
            DataRow[] secilenkayitlar = dtisim.Select("DYeri = 'Bursa'", "SiraNo desc");
            foreach (DataRow dr in secilenkayitlar)
            {
                MessageBox.Show(dr["SiraNo"].ToString() + "   " + dr["Adi"].ToString());
            }

DataTable da kayıt arama veya kayıtları seçme

          DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
            dataGridView1.DataSource = dtisim;
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.Add(kayit);
            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            dtisim.Rows.Add(kayit);
            dtisim.Rows.Add(new object[] {null,"Can","İzmir" });
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Mine";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.InsertAt(kayit, 1);

//Doğum yeri Bursa olan kayıtları seçip secilenkayitlar koleksiyonuna atar.
DataRow[] secilenkayitlar = dtisim.Select("DYeri = 'Bursa'");
foreach (DataRow dr in secilenkayitlar)
{
   MessageBox.Show(dr["SiraNo"].ToString() + "   " + dr["Adi"].ToString());
}
Select içerisinde kullanılabilecek operatörler aşağıdaki gibidir.
<, >, <=, >=, <>, =, in, like, and, or, not

//SiraNo alanındaki 3 ve 5 yazılı olan kayıtları seçip secilenkayitlar koleksiyonuna atar.
DataRow[] secilenkayitlar = dtisim.Select("SiraNo in (3,5)");
foreach (DataRow dr in secilenkayitlar)
{
   MessageBox.Show(dr["SiraNo"].ToString() + "   " + dr["Adi"].ToString());
}

//DYeri Bursa ve Yasi 20 den büyük olan kayıtları seçip secilenkayitlar koleksiyonuna atar.
DataRow[] secilenkayitlar = dtisim.Select("DYeri = 'Bursa' and Yasi > 20");
foreach (DataRow dr in secilenkayitlar)
{
   MessageBox.Show(dr["SiraNo"].ToString() + "   " + dr["Adi"].ToString());
}

DataTable da kayıt arama

          DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
            
            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir" });

            //araya satır ekleme 
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Mine";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.InsertAt(kayit, 1);

            DataRow bulunankayit = dtisim.Rows.Find(new Object[] {1, "Mine", "Bursa"});

Eğer kayıt bulunursa kayıt bilgileri bulunankayit nesnesine işlenir bulunamazsa null değeri işlenecektir.

DataTable da primarykey alana göre arama nasıl yapılır.

          DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
           
            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir" });

            //araya satır ekleme
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Mine";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.InsertAt(kayit, 1);

             DataRow bulunankayit = dtisim.Rows.Find(2);  //SiraNo su 2 olan kaydı bulur.
             MessageBox.Show(bulunankayit["SiraNo"].ToString() + " " + bulunankayit["Adi"].ToString());

DataTable dan kayıt silme

DataTable daki tüm kayıtları silmek için

dtisim.Rows.Clear();

Belirli bir sıra numarasındaki kaydı silmek için
int sirano = 5;
DataRow silinecekkayit = dtisim.Rows[sirano]; //5.kaydı siler.
dtisim.Rows.Remove(silinecekkayit);

dtisim.Rows.RemoveAt(5);  //5. kaydı siler

DataTable a kayıt ekleme ve araya kayıt girişi

          DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
           
            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir" });

            ////////***************araya satır ekleme
            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Mine";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.InsertAt(kayit, 2);    //2.satıra kayıt girişi yapmak için kullandık.

DataTable a yeni kayıt girişi

          DataTable dtisim = new DataTable("isimler");
            dtisim.Columns.Add("SiraNo", typeof(int));
            dtisim.Columns.Add("Adi", typeof(string));
            dtisim.Columns.Add("Dyeri", typeof(string));
            dtisim.PrimaryKey = new DataColumn[] { dtisim.Columns["SiraNo"] };
            dtisim.Columns["SiraNo"].AutoIncrement = true;
            
            dataGridView1.DataSource = dtisim;

            DataRow kayit = dtisim.NewRow();
            kayit["Adi"] = "Kamuran";
            kayit["Dyeri"] = "Bursa";
            dtisim.Rows.Add(kayit);

            kayit = dtisim.NewRow();
            kayit["Adi"] = "Veli";
            kayit["Dyeri"] = "Çanakkale";
            dtisim.Rows.Add(kayit);

            dtisim.Rows.Add(new object[] {null,"Can","İzmir" });

4 Ocak 2014 Cumartesi

DataTable a primarykey alanı tanımlama

DataTable daki kolonlardan istediğimiz bir tanesini primarykey olarak tanımlamamız mümkündür. Bunu aşağıdaki şekilde yapabiliriz.

      DataTable dtisim = new DataTable("isimler");
      dtisim.Columns.Add("SiraNo", typeof(int));
      dtisim.Columns.Add("adi", typeof(string));
      dtisim.Columns.Add("soyadi", typeof(string));
      dtisim.PrimaryKey = new DataColumn[] {dtisim.Columns["SiraNo"]};





3 Ocak 2014 Cuma

DataTable Kolon Ekleme

DataTable ın kolonlardan oluştuğunu daha önce yazmıştık. Bir DataTable a kolon eklemin birden fazla yolu vardır. Aşağıda buna dair bir örnek bulunmaktadır. Formunuza bir tane buton bir tane datagridview ekledikten sonra butonu çift tıklayıp aşağıdaki kodları yazın.
            // DataTable ımızı tanımlıyoruz
            DataTable dtIsimler = new DataTable();
            // DataTable ımıza kolon eklemek için DataColumn sınıfını kullanıyoruz. 
            DataColumn alan = new DataColumn();
            alan.ColumnName = "adi"; 
            alan.AllowDBNull = true;
            alan.MaxLength = 20;
            alan.DefaultValue = "Ali";
            alan.DataType = System.Type.GetType("System.String");
            // DataColumn sınıfından elde ettiğimiz alanı DataTable ımıza ekliyoruz.
            dtIsimler.Columns.Add(alan);
            
            alan = new DataColumn("soyisim");
            alan.AllowDBNull = true;
            alan.MaxLength = 20;
            alan.DefaultValue = "Boş";
            alan.DataType = System.Type.GetType("System.String");
            dtIsimler.Columns.Add(alan);

            alan = new DataColumn("Yasi", typeof(int));
            alan.AllowDBNull = false;
            alan.DefaultValue = 0;
            dtIsimler.Columns.Add(alan);

            alan = new DataColumn("DYeri", typeof(string), "Bursa");

            alan.AllowDBNull = false;
            dtIsimler.Columns.Add(alan);

            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = dtIsimler;


DataColumn sınıfının 3 farklı şeklini kullanarak DataTable ımıza kolonları ekledik. Yukarıdaki işlemi şu şekilde de yapmamız mümkündür.

            DataTable dtIsimler = new DataTable();
            dtIsimler.Columns.Add("adi", typeof(string));
            dtIsimler.Columns.Add("soyadi", typeof(string));
            dtIsimler.Columns.Add("yasi", typeof(int));
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = dtIsimler;

Ancak bu şekilde tanımladığımızda bazı özellikleri belirleyemediğimizi görebiliriz. (MaxLength, DefaultValue gibi) Eğer bunlarıda belirlemek istersek;

            DataTable dtIsimler = new DataTable();
            dtIsimler.Columns.Add("adi", typeof(string));
            dtIsimler.Columns.Add("soyadi", typeof(string));
            dtIsimler.Columns.Add("yasi", typeof(int));
            dtIsimler.Columns.Add("dyeri", typeof(string));
            dtIsimler.Columns[0].MaxLength = 20;   //0 ilk kolonu 1 ikinci kolonu temsil eder.
            dtIsimler.Columns[1].MaxLength = 20;
            dtIsimler.Columns[3].DefaultValue = "Ankara";
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = dtIsimler;

DataColumn da kullanılabilecek alan tipleri ise aşağıdaki gibidir.
Boolean
Byte
Char
DateTime
Decimal
Double
Int16
Int32
Int64
SByte
Single
String
TimeSpan
UInt16
UInt32
UInt64
Arrays o

DataTable nedir ?

Verilerimizi hafızada tutmanın bir yolu DataTable sınıfıdır. DataTable aynı veri tabanındaki bir tablo gibi kolonlardan, satırlardaki kayıtlardan, indexler gibi bir çok özellikten oluşur. System.Data namespaceinin içerisinde bulunur.

DataTable dtIsimler = new DataTable();  şeklinde veya
DataTable dtIsimler = new DataTable("isimler"); şeklinde bir isim verilerek tanımlanabilir.



2 Ocak 2014 Perşembe

C# Projesinde Klasör değiştirme

Bazen bir pojeyi kopyalayıp ismini değiştirip farklı bir proje olarak geliştirmeye devam etmek isteyebilirsiniz. Bu durumda en can sıkıcı nokta tüm proje isimleri değişmişken klasör ismini değiştirdiğiniz zaman projeyi visual studio ile açamamanızdır. (En azından benim derdim bu idi) Bu durumda yapmamız gereken çok basitmiş. projemizin sln dosyasını notepad ile açıp klasör ismini değiştiriyoruz.

İyi çalışmalar.