Bir önceki yazımda C# ile Sql Server veritabanına kayıt ekleme işlemlerini anlatmıştım. Şimdi ise veritabanındaki kayıtları formumuz üzerindeki bir DataGridView içerisinde göstermeye çalışacağız. Örneğimizde kullanacağımız önemli sınıf ve nesnelere şöyle bir bakalım.
DataGridView; kullanımı basit, kolaylıkla kişiselleştirilebilen kayıtları tablolar halinde göstermek için tasarlanmış bir kontroldür.
SqlDataAdapter; bellek üzerinde oluşturulan tablo ve kayıtların, veritabanına gönderilmesi ya da veritabanındaki tabloların belleğe çekilmesi işlemlerini gerçekleştiren sınıftır.
DataTable; veritabanından alınan bir tablo örneğini, bellekte temsil eden nesnelerdir.
Tasarım ve kodlama işlemine geçmeden önce veritabanımızdaki musteriler tablomuza birkaç tane kayıt ekleyelim.

Yukarıdaki gibi kayıtlarımızı oluşturduktan sonra formumuzu tasarlamaya başlayabiliriz. Öncelikle tüm müşteri kayıtlarını veritabanından çekerek DataGridView üzerinde göstereceğiz. Daha sonra ise tüm kayıtları değil de yazdığımız isime göre, ilgili kayıtları çeken bir arama kısmı oluşturacağız. Buna istinaden formumuzu aşağıdaki gibi tasarlayalım.

Form tasarımı tamamlandıktan sonra kodlarımızı yazmaya başlayabiliriz. Veritabanından veri çekme ve datagrid üzerinde gösterme işlemlerini kayitGetir() metodu ile yapıyoruz. Daha sonra istediğimiz şekilde bu metodu çağırabiliriz. Diğer açıklamaları kod aralarına ekledim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace MusteriTakipProgrami { public partial class VeriGoster : Form { public VeriGoster() { InitializeComponent(); } static string conString = "Server=Kutlay-;Database=MusteriTakip;Uid=sa;Password=kutlay;"; //Bu veritabanına bağlanmak için gerekli olan bağlantı cümlemiz.Bu satıra dikkat edelim. //Sql Servera bağlanırken kullandığımız bilgileri ve veritabanı ismini yazıyoruz. SqlConnection baglanti = new SqlConnection(conString); //bağlantı cümlemizi kullanarak bir SqlConnection bağlantısı oluşturuyoruz. private void VeriGoster_Load(object sender, EventArgs e) { kayitGetir(); //Tüm kayıtları gösterecek olan kayitGetir() metodumuzu çağırıyoruz. } private void kayitGetir() { baglanti.Open(); string kayit = "SELECT * from musteriler"; //musteriler tablosundaki tüm kayıtları çekecek olan sql sorgusu. SqlCommand komut = new SqlCommand(kayit, baglanti); //Sorgumuzu ve baglantimizi parametre olarak alan bir SqlCommand nesnesi oluşturuyoruz. SqlDataAdapter da = new SqlDataAdapter(komut); //SqlDataAdapter sınıfı verilerin databaseden aktarılması işlemini gerçekleştirir. DataTable dt = new DataTable(); da.Fill(dt); //Bir DataTable oluşturarak DataAdapter ile getirilen verileri tablo içerisine dolduruyoruz. dataGridView1.DataSource = dt; //Formumuzdaki DataGridViewin veri kaynağını oluşturduğumuz tablo olarak gösteriyoruz. baglanti.Close(); } } } |
Veritabanındaki tüm kayıtları DataGridView üzerinde gösterdik. Şimdi Ara butonumuza tıkladığımızda isim şartına bağlı olarak kayıtları veritabanından çeken kodlarımızı yazalım. Kodumuzu Ara butonunun click eventi içerisine ekliyoruz.
1 2 3 4 5 6 7 8 9 10 11 |
baglanti.Open(); string kayit = "SELECT * from musteriler where isim=@isim"; //musteriler tablosundaki tüm alanları isim parametresi SqlCommand komut = new SqlCommand(kayit, baglanti); komut.Parameters.AddWithValue("@isim", txtIsim.Text); //isim parametremize textbox'dan girilen değeri aktarıyoruz. SqlDataAdapter da = new SqlDataAdapter(komut); DataTable dt = new DataTable(); da.Fill(dt); dataGridView1.DataSource = dt; baglanti.Close(); |
Sql Server veritabanından verileri çekerek DataGridView içerisinde gösterik. Bir sonraki konumuz veritabanındaki verileri güncellemek üzerine olacak. Kolay gelsin.
kod satırları arasındaki acıklamaların siyah olması kötü olmus güzel anlatım yinede teşekkürler ..
iyi günler . Kısa bi bilgi vereyim, eğer data adapter kullanıyorsan , baglantı open close gerek yoktur. Kendi hallediyor arka planda
merhaba bende databaseden datagridviewa veri çekmek istiyorum fakat tüm tablolar boş olarak geliyor örnek kodum;
DataTable dt = new DataTable();
string komut = “SELECT musteriadi,musterisoyadi,gsm FROM [project].[dbo].[musteri]”;
baglanti = new SqlConnection(@”Data Source=Ali\SQLEXPRESS;Initial Catalog=project;Integrated Security=True”);
baglanti.Open();
cmd = new SqlCommand(komut, baglanti);
da = new SqlDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
baglanti.Close()
fakat dediğim gibi birşey gelmiyor sadece boş kutular nasıl düzeltebilirim? yardım edin lütfen
Gecikmiş ama başkalarının işine yarar belki :=) . AutoGenareteColumns GridWiewde true olması gerekiyor. Bir kontrol et . Aynısını yaşadım sorunum oymuş .
Merhabalar,
Konuyla Biraz alakasız ama yardımcı olursunuz umarım.
Kullanıcı girişindeki kişiye göre veri çekimini nasıl yaptırabilirim bilginiz var mı?
Hem kullanıcı girişi hemde bir sonraki formda o kullanıcıya ait bilgileri çekilmesini istiyorum.
İyi Çalışmalar,TEŞEKKÜRLER.
Merhabalar,
öncelikle login formunun kod kısmında şu fonksiyonu yazıcaksın;
SqlConnection conn = new SqlConnection(“Database Adresin”);
private void GetCustomerInfo()
{
conn.Open();
SqlCommand cmd = new SqlCommand(“Select Member_Name, Member_Surname, Member_ID FROM Members WHERE Member_Username = ‘”+ username_TextBox.Text + “‘ “,conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
name = dr[0].ToString();
surname = dr[1].ToString();
memberID = Convert.ToInt32(dr[2]);
}
conn.Close();
}
Daha sonra loginform ‘un load kısmında bu fonksiyonu çağırıcaksın. Ondan sonra tek yapman gereken bilgilerin görülmesini istediğin formun load kısmına şöyle atama yapman;
Name_lbl.Text = loginFrm.name.ToString();
Surname_lbl.Text = loginFrm.surname.ToString();
böylelikle açılan form ‘daki 2 label ‘a isim ve soyisim ‘i yazdırmış olduk. Bilgileri kendi veritabanına göre düzenlersin. Kolay gelsin.
datagridwiev i sql server ile bağladım fakat bir hücresinden veri çekmek istiyorum bir türlü başaramadım
Merhaba.
No – Ad – Yaş
1 – u – 10
2 – a – 14
3 – b – 17
4 – c – 14
5 – e – 10
6 – u – 11
7 – g – 12
böyle bir datagridview var elimde veritabanından çektiğim. Şimdi ben bu verileri
Yaş – Kişi Sayısı
10 – 2
11 – 1
12 – 1
14 – 2
17 – 1
şeklinde ayrı bir datagridview e aktarabilir miyim. Aynı zamanda ilk verilerin bulunduğu veritabanına ek sil güncelle de yapıyorum. Yani 8. sıraya bir isim ve yaş eklediğimde 2. datanın güncellenmesi de şart.
Umarım anlata bilmişimdir.
Şimdiden teşekkürler ?
Merhaba,
this.Load += new System.EventHandler(this.Form1_Load);
satırında Form1_Load için ‘VeriGoster’ does not contain a difination for ‘Form1_Load’ and no accessible…. hatası veriyor. Sorun nedir ?