Ana içeriğe atla

DbHelper.cs ile ID ye göre işlemler

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.SqlClient;


public static class DbHelper

{

    // Bağlantı cümlesi (senin kendi bağlantına göre güncelle)

    private static string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=YourDbName;Integrated Security=True";


    // INSERT + SCOPE_IDENTITY

    public static object InsertAndGetId(string query, Dictionary<string, string> parameters)

    {

        using (SqlConnection connection = new SqlConnection(connectionString))

        using (SqlCommand cmd = new SqlCommand($"{query}; SELECT SCOPE_IDENTITY();", connection))

        {

            foreach (var p in parameters)

                cmd.Parameters.AddWithValue("@" + p.Key, p.Value);


            connection.Open();

            object insertedId = cmd.ExecuteScalar(); // eklenen ID döner

            return insertedId;

        }

    }


    // GÜNCELLEME

    public static int Update(string query, Dictionary<string, string> parameters)

    {

        using (SqlConnection connection = new SqlConnection(connectionString))

        using (SqlCommand cmd = new SqlCommand(query, connection))

        {

            foreach (var p in parameters)

                cmd.Parameters.AddWithValue("@" + p.Key, p.Value);


            connection.Open();

            return cmd.ExecuteNonQuery(); // kaç satır güncellendi

        }

    }


    // SİLME

    public static int Delete(string query, Dictionary<string, string> parameters)

    {

        using (SqlConnection connection = new SqlConnection(connectionString))

        using (SqlCommand cmd = new SqlCommand(query, connection))

        {

            foreach (var p in parameters)

                cmd.Parameters.AddWithValue("@" + p.Key, p.Value);


            connection.Open();

            return cmd.ExecuteNonQuery(); // kaç satır silindi

        }

    }


    // ID BULMA (mevcut kaydın id’sini alma)

    public static object GetId(string query, Dictionary<string, string> parameters)

    {

        using (SqlConnection connection = new SqlConnection(connectionString))

        using (SqlCommand cmd = new SqlCommand(query, connection))

        {

            foreach (var p in parameters)

                cmd.Parameters.AddWithValue("@" + p.Key, p.Value);


            connection.Open();

            return cmd.ExecuteScalar(); // örneğin ID gibi tek değer

        }

    }

}

******************************************************************************
C# örnek Kullanım kodları
******************************************************************************

******************************************************************************
Kayıt Ekleme ve ID’yi Label’a Yazdırma
******************************************************************************

private void btn_Ekle_Click(object sender, EventArgs e)
{
    var parametreler = new Dictionary<string, string>
    {
        { "marka", txt_marka.Text },
        { "viskozite1", txt_viskozite1.Text },
        { "viskozite2", txt_viskozite2.Text }
    };

    string sorgu = "INSERT INTO motor_yaglari (marka, viskozite1, viskozite2) VALUES (@marka, @viskozite1, @viskozite2)";
    object yeniId = DbHelper.InsertAndGetId(sorgu, parametreler);

    if (yeniId != null)
        lbl_id.Text = yeniId.ToString();
}

******************************************************************************
Güncelleme (ID ile)
******************************************************************************
private void btn_Guncelle_Click(object sender, EventArgs e)
{
    var parametreler = new Dictionary<string, string>
    {
        { "id", lbl_id.Text },
        { "marka", txt_marka.Text },
        { "viskozite1", txt_viskozite1.Text },
        { "viskozite2", txt_viskozite2.Text }
    };

    string sorgu = "UPDATE motor_yaglari SET marka = @marka, viskozite1 = @viskozite1, viskozite2 = @viskozite2 WHERE id = @id";
    DbHelper.Update(sorgu, parametreler);
}
******************************************************************************
Silme (ID ile)
******************************************************************************

private void btn_Sil_Click(object sender, EventArgs e)
{
    var parametreler = new Dictionary<string, string>
    {
        { "id", lbl_id.Text }
    };

    string sorgu = "DELETE FROM motor_yaglari WHERE id = @id";
    DbHelper.Delete(sorgu, parametreler);
}

******************************************************************************
Daha Önce Eklenen Kayıtların ID’sini Bulma
******************************************************************************

private void btn_IdBul_Click(object sender, EventArgs e)
{
    var parametreler = new Dictionary<string, string>
    {
        { "marka", txt_marka.Text },
        { "viskozite1", txt_viskozite1.Text },
        { "viskozite2", txt_viskozite2.Text }
    };

    string sorgu = "SELECT id FROM motor_yaglari WHERE marka = @marka AND viskozite1 = @viskozite1 AND viskozite2 = @viskozite2";
    object id = DbHelper.GetId(sorgu, parametreler);

    if (id != null)
        lbl_id.Text = id.ToString();
    else
        lbl_id.Text = "Bulunamadı";
}

******************************************************************************
Açıklamalarla Özet
******************************************************************************
Yöntem Adı Görevi
InsertAndGetId() Yeni kayıt ekler ve SCOPE_IDENTITY() ile ID'yi döner
Update() ID ile güncelleme yapar
Delete() ID ile silme yapar
GetId() Belirli kriterlere göre ID'yi bulur (örneğin eski kayıtlar için)


🧠 Sonuç ve Avantajlar

  • Tüm projelerinde bu DbHelper.cs sınıfını kullanarak kod tekrarını azaltırsın.

  • Label ile ID yakaladığın için, güncelleme ve silme işlemleri sadeleşir.

  • Aynı kalıpta her tabloda çalışabilir.

Bu blogdaki popüler yayınlar

FOREGIN KEY ve INNER JOIN ile ilişkili tablo oluşturma Örneği

--1)DataBase oluşturma Sorgusu --CREATE DATABASE Join_Alistirma; --GO --USE Join_Alistirma; --GO --2)musteri Tablosu oluşturma --CREATE TABLE musteri ( --    musteri_ID INT IDENTITY(1,1) PRIMARY KEY, --    adi_soyadi NVARCHAR(100) NOT NULL, --    telefon NVARCHAR(20) NOT NULL --); ---3)araclar Tablosunu Oluştur (FOREIGN KEY ile) --CREATE TABLE araclar ( --    id INT IDENTITY(1,1) PRIMARY KEY, --    musteri_ID INT NOT NULL, --    plaka NVARCHAR(20) NOT NULL, --    marka NVARCHAR(50), --    model NVARCHAR(50), --    yil INT, --    FOREIGN KEY (musteri_ID) REFERENCES musteri(musteri_ID) --); ----------------------------------------------------------------------------- ----NOT  --musteri_ID → musteri tablosuyla bağlantılı olacak. --plaka, marka, model, yil alanları araç bilgilerini tutacak. ----------------------------------------------------------------------------- ---4)Tablolara muste...

İD ye göre işlemler C# ve Class örnekleri ile Birlikte

***************************************************************************** ✅ DbHelper.cs adında bir sınıf ile Insert , Update , Delete , GetId , SelectAll işlemlerini kolayca yapabilirsiniz. ✅ SCOPE_IDENTITY() kullanarak son eklenen kaydın ID’sini çekme örneği var. ✅ Bu ID’yi Label veya TextBox ’a yazdırabilir, Update veya Delete için tekrar kullanabilirsiniz. ✅ DataGridView ile tüm verileri listeleme örneği de dahil. *****************************************************************************  // ✅ DbHelper.cs using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; public static class DbHelper {     private static string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=YourDatabase;Integrated Security=True";     public static object InsertAndGetId(string query, Dictionary<string, string> parameters)     {         using (SqlConnection connection = new SqlConne...

INNER JOIN Silme İşleminde REFERANCE Hatası

 SQL 'de INNER JOIN için ben diagram kullandım ama silme işlemleri için bu hataya yol açtı kodlar yazıldıktan sonra. Sillme işleminin yapıla bilmesi için : Diagram üzerinden "ON DELETE CASCADE" ekleme SSMS’te veritabanını aç. Database Diagrams → kullandığın diyagramı aç. isim tablosu ile soyisim tablosu arasındaki ilişki çizgisine çift tıkla . INSERT and UPDATE Specification bölümünü bul. Delete Rule → Cascade olarak değiştir. Kaydedip diyagramı kapat.   2️⃣ SQL komutuyla ekleme (manuel yöntem) Eğer diyagramdan uğraşmak istemiyorsan, SQL koduyla da ekleyebilirsin: ALTER TABLE Soyisim DROP CONSTRAINT FK_Soyisim_Isim;  -- Burada mevcut foreign key adını yazacaksın ALTER TABLE Soyisim ADD CONSTRAINT FK_Soyisim_Isim FOREIGN KEY (isim_Id) REFERENCES Isim(isim_Id) ON DELETE CASCADE; ON DELETE CASCADE tamamen silme işlemleri için tanımlanan bir FOREIGN KEY davranış kuralıdır. Normal FOREIGN KEY : Ana tabloda bir kayıt silmek istersen ve bu kayıt başka ...