C# Windows Form ile Veritabanı İşlemleri

C# ile Windows Form uygulamalarında, veritabanı işlemleri yaparak kullanıcıdan veri almak, saklamak ve düzenlemek mümkündür. Veritabanı işlemlerinde genellikle SQL Server, MySQL veya SQLite gibi veri tabanı yönetim sistemleri kullanılır. Bu yazıda, C# Windows Form ile temel veritabanı işlemleri hakkında detaylı bilgi vereceğim.


1. Gerekli Hazırlıklar

a) SQL Server veya Veritabanı Kurulumu

Eğer SQL Server kullanacaksanız:

  • SQL Server’ı ve SQL Server Management Studio’yu (SSMS) kurun.
  • Bir veritabanı oluşturun (örneğin: OrnekDB).

b) Visual Studio Projesi Ayarları

  1. Proje Oluşturma:
    • Yeni bir Windows Form projesi oluşturun.
    • Çözüm Gezgini’nden References kısmına sağ tıklayıp Manage NuGet Packages seçeneğiyle gerekli kütüphaneleri yükleyin.
  2. Gerekli Kütüphaneler:
    • Veritabanı bağlantısı için aşağıdaki kütüphaneleri kullanabilirsiniz:
      • System.Data.SqlClient (SQL Server için)
      • MySql.Data (MySQL için)
      • System.Data.SQLite (SQLite için)

2. Veritabanı Bağlantısı

SQL Server Bağlantı Dizesi

SQL Server ile bağlantı için bir bağlantı dizesi (connection string) kullanmanız gerekiyor. Aşağıda örnek bir bağlantı dizesi verilmiştir:

string connectionString = "Server=localhost; Database=OrnekDB; Integrated Security=True;";

Bağlantıyı Açma ve Kapatma

Bağlantıyı açmak ve kapatmak için SqlConnection sınıfını kullanabilirsiniz.

using System.Data.SqlClient;

string connectionString = "Server=localhost; Database=OrnekDB; Integrated Security=True;";
SqlConnection connection = new SqlConnection(connectionString);

try
{
    connection.Open();
    MessageBox.Show("Bağlantı başarılı!");
}
catch (Exception ex)
{
    MessageBox.Show("Hata: " + ex.Message);
}
finally
{
    connection.Close();
}


3. Veritabanı İşlemleri

a) Veri Ekleme (INSERT)

Bir formdan alınan veriyi veritabanına eklemek için aşağıdaki örneği kullanabilirsiniz:

Form Elemanları:

  • TextBox (örneğin: txtAd, txtSoyad)
  • Button (Veri ekleme işlemini başlatır)

Kod:

private void btnEkle_Click(object sender, EventArgs e)
{
    string connectionString = "Server=localhost; Database=OrnekDB; Integrated Security=True;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string query = "INSERT INTO Kisiler (Ad, Soyad) VALUES (@Ad, @Soyad)";
        SqlCommand command = new SqlCommand(query, connection);

        command.Parameters.AddWithValue("@Ad", txtAd.Text);
        command.Parameters.AddWithValue("@Soyad", txtSoyad.Text);

        try
        {
            connection.Open();
            command.ExecuteNonQuery();
            MessageBox.Show("Kayıt başarıyla eklendi!");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Hata: " + ex.Message);
        }
    }
}


b) Veri Listeleme (SELECT)

Veritabanından verileri almak ve bir DataGridView üzerinde göstermek için aşağıdaki örneği kullanabilirsiniz:

Kod:

private void btnListele_Click(object sender, EventArgs e)
{
    string connectionString = "Server=localhost; Database=OrnekDB; Integrated Security=True;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string query = "SELECT * FROM Kisiler";
        SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
        DataTable table = new DataTable();

        try
        {
            connection.Open();
            adapter.Fill(table);
            dataGridView1.DataSource = table; // dataGridView1, tasarımda eklenen bir DataGridView kontrolüdür.
        }
        catch (Exception ex)
        {
            MessageBox.Show("Hata: " + ex.Message);
        }
    }
}


c) Veri Güncelleme (UPDATE)

Bir kaydı güncellemek için aşağıdaki örneği inceleyebilirsiniz:

Kod:

private void btnGuncelle_Click(object sender, EventArgs e)
{
    string connectionString = "Server=localhost; Database=OrnekDB; Integrated Security=True;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string query = "UPDATE Kisiler SET Ad = @Ad, Soyad = @Soyad WHERE Id = @Id";
        SqlCommand command = new SqlCommand(query, connection);

        command.Parameters.AddWithValue("@Ad", txtAd.Text);
        command.Parameters.AddWithValue("@Soyad", txtSoyad.Text);
        command.Parameters.AddWithValue("@Id", txtId.Text);

        try
        {
            connection.Open();
            command.ExecuteNonQuery();
            MessageBox.Show("Kayıt başarıyla güncellendi!");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Hata: " + ex.Message);
        }
    }
}


d) Veri Silme (DELETE)

Bir kaydı silmek için aşağıdaki kodu kullanabilirsiniz:

Kod:

private void btnSil_Click(object sender, EventArgs e)
{
    string connectionString = "Server=localhost; Database=OrnekDB; Integrated Security=True;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        string query = "DELETE FROM Kisiler WHERE Id = @Id";
        SqlCommand command = new SqlCommand(query, connection);

        command.Parameters.AddWithValue("@Id", txtId.Text);

        try
        {
            connection.Open();
            command.ExecuteNonQuery();
            MessageBox.Show("Kayıt başarıyla silindi!");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Hata: " + ex.Message);
        }
    }
}


4. Veritabanı İşlemlerinde Dikkat Edilmesi Gerekenler

  1. SQL Injection’a Karşı Önlem:
    • SQL sorgularında parametre kullanarak, kötü amaçlı sorguların çalıştırılmasını engelleyin (@Parametre kullanımı gibi).
  2. Try-Catch Kullanımı:
    • Veritabanı bağlantılarında hataları yakalamak için try-catch blokları kullanın.
  3. Bağlantıyı Kapama:
    • using yapısı, bağlantıyı otomatik olarak kapatır. Alternatif olarak connection.Close() metodunu kullanabilirsiniz.
  4. Veri Doğrulama:
    • Kullanıcıdan alınan verileri kontrol ederek boş veya hatalı girişleri engelleyin.

5. Örnek Veritabanı Yapısı

CREATE DATABASE OrnekDB;

USE OrnekDB;

CREATE TABLE Kisiler (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    Ad NVARCHAR(50),
    Soyad NVARCHAR(50)
);

One comment

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir