C# Datatable'dan Listeye Veri Ekleme

C# Datatable'dan Listeye Veri Ekleme

C# Datatable'dan Listeye Veri Ekleme

  8 dakika Okuma Süresi
Herkese merhaba, bu yazımızda C#'da özellikle Türkçe dilinde çok az kaynak bulunan veritabanından dinamik bir listeye veri ekleme konusunu anlatacağım.
Anlatacağım konu aslında Entity Framework yapısına benziyor fakat Entity Framework bilmeyenler için oldukça faydalı olacaktır.
Bu anlatımda veritabanı olarak MySql kullanacağım fakat diğer veritabanı yapılarında da mantık aynı olacaktır.
Hadi anlatıma geçelim :)

Örneğin market adlı bi tane MySql veritabanı ve bu veritabanında da urunler adında bi tablomuz olsun. urunler tablosunda int tipinde bir urunID, varchar tipinde urunAdi, varchar tipinde barkod, float tipinde fiyat ve int tipinde bir de stok sütunları olsun.
Yani veritabanı yapımız şöyle olacak;

C# Datatable'dan Listeye Veri Ekleme

Şimdi bu urunler tablosunu C# tarafında listeye çevireceğiz.
Tabi bunun için de classlardan faydalanacağız. Bunun için UrunlerClass adında bi class oluşturup urunler tablosunda bulunan her sütun için bi property ekleyelim. Buyrun;
public int UrunID { get; set; }
public string UrunAdi { get; set; }
public string UrunBarkod { get; set; }
public float UrunFiyat { get; set; }
public int UrunStok { get; set; }

Ayrıca baglanti adında MySqlConnection tipinde veritabanı bağlantı işlemlerini yapabileceğimiz bir değişken oluşturuyoruz.
MySqlConnection baglanti = new MySqlConnection("server=localhost; uid=root; pwd=; database=market");
Buradaki server kısmına veritabanı sunucu adresini, uid kısmına veritabanı kullanıcı adını, pwd kısmına veritabanı şifresini, database kısmına veritabanı adını yazıyoruz.
Şimdi de veritabanından veriyi çekip DataTable'a dolduracak kodu yazalım.
baglanti.Open();
MySqlCommand komut = new MysqlCommand("select * from urunler", baglanti);
MysqlDataAdapter da = new MysqlDataAdapter(komut);
DataTable dt = new DataTable();
da.Fill(dt);
baglanti.Close();
Yazdığımız bu kodda sırasıyla veritabanı bağlantısını açtık, veritabanına sorgumuzu gönderdik, gelen verileri MySqlDataAdapter içine doldurduk, yeni bir DataTable oluşturarak MySqlDataAdapter'dan verileri DataTable içine doldurduk ve sonra bağlantıyı kapattık.
MySql işlemleri yapmak için öncelikle bağlantıyı açmalı ve işimiz bittikten sonra da bağlantıyı kapatmalıyız. Aksi takdirde hata alacağız.

Şimdi de asıl konumuz olan DataTable'dan listeye veri aktarımı yapacağımız kodlara geçelim;
List UrunlerListe = dt.AsEnumerable().Select(x => new UrunlerClass()
{
        UrunID = Convert.ToInt32(x["urunID"]),
       UrunAdi = x["urunAdi"].ToString(),
       UrunBarkod = x["barkod"].ToString(),
       UrunFiyat = float.Parse(x["fiyat"].ToString()),
        UrunStok = Convert.ToInt32(x["urunAdi"])
}).ToList();
Bu yazdığımız kodda ise daha önce oluşturduğumuz DataTable tipinde olan dt değişkenini Enumerable tipine çevirip her veriyi UrunlerClass tipine çevirip son olarakta listeye çevirdik ve işlem tamamdır :)

Yazdığımız bu kadar kodda hata almamak için sayfanın en başına
using System;
using System.Data;
using System.Linq;
using System.Data.DatasetExtensions;
using MySql.Data.MySqlClient;
using System.Collections.Generic;
kodlarını eklememiz gerek.
System kütüphanesini veritabanından gelen verileri C# tipine çevirmek, System.Data kütüphanesini DataTable kullanabilmek, System.Linq kütüphanesini Select() ve ToList() eklenti fonksiyonlarını kullanabilmek, System.Data.DatasetExtensions kütüphanesini DataTable'dan listeye çevirmek için kullanılan AsEnumerable() fonksiyonunu kullanabilmek, Mysql.Data.MySqlClient kütüphanesini veritabanı işlemleri ve System.Collections.Generic kütüphanesini ise liste kullanabilmek için eklememiz gerekiyor.

Evet tüm işlemlerimiz tamamdır, bundan böyle veritabanından çektiğiniz verileri listeye ekleyebilir ve Linq kullanarak işlemlerinizi rahatlıkla yapabilirsiniz.
Yazdığımız tüm kodları şöyle bırakalım;
using System;
using System.Data;
using System.Linq;
using System.Data.DatasetExtensions;
using MySql.Data.MySqlClient;
using System.Collections.Generic;
namespace Proje
{
            class UrunlerClass
            {
                     public int UrunID { get; set; }
                     public string UrunAdi { get; set; }
                     public string UrunBarkod { get; set; }
                     public float UrunFiyat { get; set; }
                     public int UrunStok { get; set; }
                     MySqlConnection baglanti = new MySqlConnection("server=localhost; uid=root; pwd=; database=market");
                     List UrunlerListe = dt.AsEnumerable().Select(x => new UrunlerClass()
                     {
                            UrunID = Convert.ToInt32(x["urunID"]),
                            UrunAdi = x["urunAdi"].ToString(),
                            UrunBarkod = x["barkod"].ToString(),
                            UrunFiyat = float.Parse(x["fiyat"].ToString()),
                            UrunStok = Convert.ToInt32(x["urunAdi"])
}).ToList();
                    }
            }
}

Bugünkü yazımızda bu kadardı, Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz.
Başka bir derste görüşmek üzere, herkese hayırlı günler :)


  • İçeriği Paylaş:

İÇERİĞİ DEĞERLENDİR

Toplam Değerlendirme Sayısı: 0
Toplam Değerlendirme: 0 / 5

Cevap Yaz