Giriş
C# ile masaüstü uygulama geliştiren herkesin mutlaka öğrenmesi gereken konuların başında veritabanı işlemleri gelir. Özellikle gerçek hayatta kullanılan uygulamaların büyük çoğunluğu veri saklama, listeleme ve yönetme üzerine kuruludur. Bu yazıda, Microsoft SQL Server ile entegre çalışan bir ürün takip uygulamasını adım adım inceleyeceğiz.
Bu proje sayesinde hem C# Windows Forms hem de ADO.NET kullanarak veritabanı işlemleri nasıl yapılır detaylı şekilde öğrenmiş olacaksınız.
C# öğrenmeye yeni başlıyorsanız, öncelikle C# ve .NET Framework’e Giriş başlıklı içeriğimizi incelemenizi öneririz.
Proje Nedir?
Bu uygulama, temel olarak bir ürün/stok takip sistemidir. Kullanıcılar arayüz üzerinden ürün ekleyebilir, mevcut ürünleri listeleyebilir, güncelleyebilir ve silebilir. Yani projede yazılım dünyasının en temel kavramlarından biri olan CRUD işlemleri (Create, Read, Update, Delete) uygulanmıştır.
Bu tarz projeler:
- Küçük işletmeler
- Stok takip sistemleri
- Market yönetim yazılımları
gibi birçok alanda kullanılabilir.
Kullanılan Teknolojiler
Projede kullanılan başlıca teknolojiler şunlardır:
- C# Windows Forms
- Microsoft SQL Server
- ADO.NET (SqlConnection, SqlCommand, SqlDataAdapter)
- DataGridView
Bu teknolojiler sayesinde hem hızlı hem de performanslı bir masaüstü uygulaması geliştirilmiştir.
Proje Ekran Görüntüsü

1. Ürün Listeleme (SELECT İşlemi)
Uygulama açıldığında veritabanındaki tüm ürünler DataGridView içerisinde listelenir. Bu işlem kullanıcıya mevcut verileri görüntüleme imkanı sunar.
Bu işlemde:
- SqlDataAdapter kullanılır
- Veriler DataTable içine alınır
- DataGridView’e bağlanır
Kod Bölümü (Listeleme)
public void Listele()
{
try
{
baglanti.Open();
//SQLAtapter: MSSQL ile C# arasında verileri taşır
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM urunler", baglanti);
//DataTable: bellekte geçici bir tablo oluşturur verilerin geleceği boş tabloyu oluştururuz
DataTable dt = new DataTable();
//Sql Sorgusunu çalıştırır. Veritabanından gelen verileri DataTable e ekler
da.Fill(dt);
//Gelen verileri datagridviewa eklet
dataGridView1.DataSource = dt;
baglanti.Close();
}
catch
{
MessageBox.Show("HATA OLUŞTU");
}
}
2. Ürün Ekleme (INSERT İşlemi)
Kullanıcı arayüzde bulunan alanlara:
- Ürün adı
- Kategori
- Fiyat
- Stok
bilgilerini girerek yeni ürün ekleyebilir.
Bu işlemde dikkat edilmesi gereken en önemli nokta parametreli sorgu kullanmaktır. Bu sayede hem güvenli hem de hatasız veri işlemi yapılır.
Kod Bölümü (Ekleme)
private void kaydetBtn_Click(object sender, EventArgs e)
{
try
{
baglanti.Open();
SqlCommand sorgu = new SqlCommand("INSERT INTO urunler (urun_ad,urun_kategori,urun_fiyat,urun_stok) VALUES (@ad,@kategori,@fiyat,@stok)", baglanti);
sorgu.Parameters.AddWithValue("@ad", textBox1.Text);
sorgu.Parameters.AddWithValue("@kategori", comboBox1.Text);
sorgu.Parameters.AddWithValue("@fiyat", Convert.ToDouble(textBox3.Text));
sorgu.Parameters.AddWithValue("@stok", Convert.ToInt16(textBox4.Text));
sorgu.ExecuteNonQuery();
MessageBox.Show("KAYIT EKLENDİ");
baglanti.Close();
Listele();
}
catch (Exception ex)
{
MessageBox.Show("HATA - "+ex.Message);
}
}
3. Ürün Silme (DELETE İşlemi)
Silme işlemi, seçilen ürünün ID bilgisine göre gerçekleştirilir. Kullanıcı DataGridView üzerinden bir ürün seçer ve “Sil” butonuna bastığında kayıt veritabanından kaldırılır.
Kritik nokta:
DELETE işlemlerinde mutlaka WHERE koşulu kullanılmalıdır. Aksi halde tüm tablo silinebilir.
Kod Bölümü (Silme)
private void silBtn_Click(object sender, EventArgs e)
{
try
{
baglanti.Open();
SqlCommand sorgusil = new SqlCommand("DELETE FROM urunler WHERE urun_id=@id", baglanti);
sorgusil.Parameters.AddWithValue("@id", Convert.ToInt16(textBox2.Text));
sorgusil.ExecuteNonQuery();
MessageBox.Show("KAYIT SİLİNDİ");
baglanti.Close();
Listele();
}
catch(Exception ex)
{
MessageBox.Show("HATALI İŞLEM - "+ex.Message);
}
}
4. Ürün Güncelleme (UPDATE İşlemi)
Güncelleme işlemi, seçilen ürünün bilgilerinin değiştirilmesini sağlar. Kullanıcı bir satırı seçtikten sonra bilgiler TextBox’lara gelir ve düzenleme yapıldıktan sonra veritabanına kaydedilir.
Kod Bölümü (Güncelleme)
private void guncelleBtn_Click(object sender, EventArgs e)
{
try
{
baglanti.Open();
int id = Convert.ToInt16(textBox5.Text);
int yenifiyat = Convert.ToInt16(textBox6.Text);
SqlCommand guncelle = new SqlCommand("UPDATE urunler SET urun_fiyat=@fiyat WHERE urun_id=@id",baglanti);
guncelle.Parameters.AddWithValue("@fiyat", yenifiyat);
guncelle.Parameters.AddWithValue("@id", id);
guncelle.ExecuteNonQuery();
MessageBox.Show("FİYAT GÜNCELLENDİ");
baglanti.Close();
Listele();
}
catch
{
MessageBox.Show("HATA");
}
}
Parametreli Sorgular Neden Önemli?
Projede kullanılan tüm SQL işlemleri parametreli sorgular ile yapılmıştır. Bunun temel sebepleri:
- SQL Injection saldırılarını önlemek
- Daha güvenli veri işlemleri sağlamak
- Veri tip hatalarını minimize etmek
Bu yaklaşım, profesyonel yazılım geliştirme süreçlerinde standart olarak kullanılır.
Bu Proje Kimler İçin Uygun?
Bu proje özellikle aşağıdaki kişiler için oldukça faydalıdır:
- C# öğrenmeye yeni başlayanlar
- Windows Forms geliştirenler
- Veritabanı bağlantısı kurmak isteyenler
- CRUD mantığını öğrenmek isteyenler
Eğer bu projeyi tam olarak anlarsanız, daha büyük projelere geçişiniz çok daha kolay olacaktır.
Geliştirme Önerileri
Projeyi bir üst seviyeye taşımak için şu özellikleri ekleyebilirsin:
- Ürün arama (LIKE ile filtreleme)
- Kategoriye göre listeleme
- Stok uyarı sistemi
- Kullanıcı giriş sistemi
Sonuç
Bu yazıda, C# Windows Forms ile Microsoft SQL Server kullanarak geliştirilmiş bir ürün takip uygulamasını detaylı şekilde inceledik. CRUD işlemlerinin mantığını kavrayarak, kendi projelerinizi geliştirebilecek seviyeye ulaşabilirsiniz.
Bu tarz uygulamalar, gerçek hayatta kullanılan yazılımların temelini oluşturur. Bu yüzden bu projeyi sadece öğrenmekle kalmayıp geliştirmeniz sizi bir adım öne taşıyacaktır.




