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ı
- 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.
- 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)
- Veritabanı bağlantısı için aşağıdaki kütüphaneleri kullanabilirsiniz:
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
- 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).
- SQL sorgularında parametre kullanarak, kötü amaçlı sorguların çalıştırılmasını engelleyin (
- Try-Catch Kullanımı:
- Veritabanı bağlantılarında hataları yakalamak için
try-catch
blokları kullanın.
- Veritabanı bağlantılarında hataları yakalamak için
- Bağlantıyı Kapama:
using
yapısı, bağlantıyı otomatik olarak kapatır. Alternatif olarakconnection.Close()
metodunu kullanabilirsiniz.
- 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)
);
Mükemmel bu sayfadan çok yararlanıyorum