Bu yazımızda C# ile SQL bağlantısı ve kayıt listeleme, ekleme, güncelleme ve silme işlemlerini gerçekleştiren basit bir uygulama oluşturacağız.
Daha önceki C# Sql bağlantısı örneğimizden farklı olarak bu uygulamamızda Class yapısının nasıl kullanıldığı ile ilgili bilgiler bulacaksınız.
Ayrıca Form tasarımı, veritabanı ve tablo oluşturma işlemlerini detaylı olarak anlatmaya çalışacağım.
Örneğimize başlayalım.
Adım 1: İlk olarak Visual Studio programında Create New Project diyerek yeni projemizi açalım.
Adım 2: Burada
Windown Forms App (.Net Framework) seçerek yeni bir Wİndows Form projesi açacağız. Projenizi isimlendirerek Create Butonuna basın.
Adım 3: Uygulama başarıyla oluşturulduktan sonra, aşağıda gösterildiği gibi Toolbox bölümünden kontroller eklemeye başlayacağız ve kontroller için uygun isimlendirmeleri (Name) sağlayacağız.
Name özelliklerini aşağıdaki gibi ayarlıyoruz.
DataGridView için Özellikler penceresinden Selection Mode özelliğini FullRowSelect yapıyoruz.
Yine DataGridView için aşağıdaki özellikleri kapatıyoruz.
Adım 4:
Daha sonra SQL Server’da bir veritabanı ve tablo oluşturacağız. ‘Microsoft SQL Server Management Studio’yu açın ‘Database‘ klasörüne sağ tıklayın ‘New Database‘ tıklayın.
Aşağıdaki ‘Yeni Veritabanı’ iletişim kutusu, ‘dbPersonel‘ olarak yeni bir veritabanı adı girin ve Tamam’ı tıklayın.
Adım 5: Sql Server programında New Query penceresinde aşağıdaki kodları yazarak tablo ve gerekli alanları oluşturalım.
1 2 3 4 5 6 7 8 9 |
CREATE TABLE [dbo].[Personel]( [Id] [int] NOT NULL PRIMARY KEY, [AdSoyad] [nvarchar](50) NULL, [Yas] [int] NULL, [Telefon] [nvarchar](50) NULL, [Cinsiyet] [nvarchar](10) NULL ) |
Veritabanında Personel Tablosu üzerinde sağ tıklayarak Design tıklarsanız aşağıdaki gibi tablonuzu göreceksiniz. Eğer tablonuz sorunsuz oluştuğu halde görünmüyorsa Yenile düğmesine basarak tablonuzu görüntüleyebilirsiniz.
Adım 6: Artık Form üzerine geçerek veritabanı bağlantısı kurma ve CRUD (Create, Retrieve, Update, and Delete) işlemlerine geçebiliriz.
Windows uygulamasından veritabanına nasıl bağlanılır?
Aşağıda gösterildiği gibi basit adımlarla Windows uygulamasında kolayca veritabanı bağlantısı ekleyeceğiz,
Tools menüsüne gidin ‘Connect to Database‘ ı tıklayın.
Adım 7: Data Source olarak Microsoft SQL Server seçerek devam edelim.
Varsayılan olarak, veri kaynağı Microsoft SQL Server (SQL İstemcisi) olarak seçilir.
Server Name alnına varsayılan olarak ‘.’ veya bilgisayar adınızı seçebilirsiniz. . Database Name bölümünde açılır menüden ‘dbPersonel‘ olarak veritabanımızı seçin. Bu işlemlerden sonra Test Connection butonu ile bağlantınızı test edebilirsiniz.
Adım 8: Veritabanı bağlantısı oluşturulduktan sonra aşağıda gösterildiği gibi bağlantı detaylarını göreceksiniz,
Adım 9: Vertabanı bağlantısı üzerinde sağ tıklayıp Properties diyerek aşağıdaki görseldeki gibi Connection String bölümünü bağlantımız için kopyalayalım.
Adım 10: Bu adımda App.config dosyamıza veritabanı bağlantısı için bir önceki adımda kopyaladığımız bağlantı cümlemizi ekleyeceğiz.
Adım 11: Proje üzerinde sağ tıklayarak Add-Class seçelim.
Gelen ekranda Class ismini Personel olarak ayarlayarak sınıfımızı ekleyelim.
Adım 12:
Şimdi Personel Class’ ımızı ve Property lerini oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class Personel { int _id; string _adSoyad; string _yas; string _telefon; string _cinsiyet; public int Id { get => _id; set => _id = value; } public string AdSoyad { get => _adSoyad; set => _adSoyad = value; } public string Yas { get => _yas; set => _yas = value; } public string Telefon { get => _telefon; set => _telefon = value; } public string Cinsiyet { get => _cinsiyet; set => _cinsiyet = value; } } |
ConfigurationManager kullanarak App.config dosyamızda tanımladığımız bağlantı cümlemizi ekleyelim.
1 2 3 |
private static string myConn = ConfigurationManager.ConnectionStrings["connString"].ConnectionString; |
Adım 13: Personel Ekleme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public bool InsertPersonel(Personel personel) { int rows; using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(InsertQuery, con)) { com.Parameters.AddWithValue("@PersonelId", personel.Id); com.Parameters.AddWithValue("@PersonelAd", personel.AdSoyad); com.Parameters.AddWithValue("@PersonelYas", personel.Yas); com.Parameters.AddWithValue("@PersonelTelefon", personel.Telefon); com.Parameters.AddWithValue("@PersonelCinsiyet", personel.Yas); rows = com.ExecuteNonQuery(); } } return (rows > 0) ? true : false; } |
Adım 14: Personel Güncelleme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
private const string UpdateQuery = "Update Personel set AdSoyad=@PersonelAd, Yas=@PersonelYas, Telefon=@PersonelTelefon, Cinsiyet=@PersonelCinsiyet where EmpId=@PersonelId"; public bool UpdatePersonel(Personel personel) { int rows; using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(UpdateQuery, con)) { com.Parameters.AddWithValue("@PersonelAd", personel.AdSoyad); com.Parameters.AddWithValue("@PersonelYas", personel.Yas); com.Parameters.AddWithValue("@PersonelTelefon", personel.Telefon); com.Parameters.AddWithValue("@PersonelCinsiyet", personel.Yas); com.Parameters.AddWithValue("@PersonelId", personel.Id); rows = com.ExecuteNonQuery(); } } return (rows > 0) ? true : false; } |
Adım 15: Personel Silme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private const string DeleteQuery = "Delete from Personel where Id=@PersonelId"; public bool DeletePersonel(Personel personel) { int rows; using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(DeleteQuery, con)) { com.Parameters.AddWithValue("@PersonelId", personel.Id); rows = com.ExecuteNonQuery(); } } return (rows > 0) ? true : false; } |
Adım 16: Personel Liste Getirme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
private const string SelectQuery = "Select * from Personel"; public DataTable GetPersonel() { var datatable = new DataTable(); using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(SelectQuery, con)) { using (SqlDataAdapter adapter = new SqlDataAdapter(com)) { adapter.Fill(datatable); } } } return datatable; } |
Adım 17: Personel Class’ ımız artık aşağıdaki gibi görünecektir.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VeritabaniOrnek { public class Personel { int _id; string _adSoyad; string _yas; string _telefon; string _cinsiyet; public int Id { get => _id; set => _id = value; } public string AdSoyad { get => _adSoyad; set => _adSoyad = value; } public string Yas { get => _yas; set => _yas = value; } public string Telefon { get => _telefon; set => _telefon = value; } public string Cinsiyet { get => _cinsiyet; set => _cinsiyet = value; } private static string myConn = ConfigurationManager.ConnectionStrings["connString"].ConnectionString; private const string InsertQuery = "Insert Into Personel(Id, AdSoyad, Yas, Telefon, Cinsiyet) Values (@PersonelId, @PersonelAd, @PersonelYas, @PersonelTelefon, @PersonelCinsiyet)"; public bool InsertPersonel(Personel personel) { int rows; using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(InsertQuery, con)) { com.Parameters.AddWithValue("@PersonelId", personel.Id); com.Parameters.AddWithValue("@PersonelAd", personel.AdSoyad); com.Parameters.AddWithValue("@PersonelYas", personel.Yas); com.Parameters.AddWithValue("@PersonelTelefon", personel.Telefon); com.Parameters.AddWithValue("@PersonelCinsiyet", personel.Yas); rows = com.ExecuteNonQuery(); } } return (rows > 0) ? true : false; } private const string UpdateQuery = "Update Personel set AdSoyad=@PersonelAd, Yas=@PersonelYas, Telefon=@PersonelTelefon, Cinsiyet=@PersonelCinsiyet where EmpId=@PersonelId"; public bool UpdatePersonel(Personel personel) { int rows; using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(UpdateQuery, con)) { com.Parameters.AddWithValue("@PersonelAd", personel.AdSoyad); com.Parameters.AddWithValue("@PersonelYas", personel.Yas); com.Parameters.AddWithValue("@PersonelTelefon", personel.Telefon); com.Parameters.AddWithValue("@PersonelCinsiyet", personel.Yas); com.Parameters.AddWithValue("@PersonelId", personel.Id); rows = com.ExecuteNonQuery(); } } return (rows > 0) ? true : false; } private const string DeleteQuery = "Delete from Personel where Id=@PersonelId"; public bool DeletePersonel(Personel personel) { int rows; using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(DeleteQuery, con)) { com.Parameters.AddWithValue("@PersonelId", personel.Id); rows = com.ExecuteNonQuery(); } } return (rows > 0) ? true : false; } private const string SelectQuery = "Select * from Personel"; public DataTable GetPersonel() { var datatable = new DataTable(); using (SqlConnection con = new SqlConnection(myConn)) { con.Open(); using (SqlCommand com = new SqlCommand(SelectQuery, con)) { using (SqlDataAdapter adapter = new SqlDataAdapter(com)) { adapter.Fill(datatable); } } } return datatable; } } } |
Artık tüm işlemleri tamamladık ve yukarıdaki yöntemleri kullanarak Personel Ekleme, Güncelleme, Silme ve Getirme işlemlerini yapabiliriz.
Adım 18: Form1.cs, kullanıcı düğmeyi tıklattığında Ekle, Güncelle, Sil ve Temizle düğmesi tıklama olaylarını içerir.
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace VeritabaniOrnek { public partial class Form1 : Form { Personel personel=new Personel(); public Form1() { InitializeComponent(); dgwPersonel.DataSource = personel.GetPersonel(); } private void ClearControls() { txtId.Text = ""; txtAdSoyad.Text = ""; txtYas.Text = ""; txtTelefon.Text = ""; cmbCinsiyet.Text = ""; } private void btnEkle_Click(object sender, EventArgs e) { personel.Id=Convert.ToInt32(txtId.Text); personel.AdSoyad=txtAdSoyad.Text; personel.Yas=Convert.ToInt32(txtYas.Text); personel.Telefon=txtTelefon.Text; personel.Cinsiyet=cmbCinsiyet.SelectedItem.ToString(); // Personel bilgilerini veritabanına eklemek için InsertPersonel metodunu çağırın. var kontrol = personel.InsertPersonel(personel); // Eklenen personelleri göstermek için listeyi yenileyin dgwPersonel.DataSource = personel.GetPersonel(); if (kontrol) { // Çalışan başarıyla eklendikten sonra kontrolleri temizleyin ClearControls(); MessageBox.Show("Personel başarıyla eklendi."); } else MessageBox.Show("Hata!!!. Lütfen tekrar deneyin..."); } private void btnGuncelle_Click(object sender, EventArgs e) { personel.Id = Convert.ToInt32(txtId.Text); personel.AdSoyad = txtAdSoyad.Text; personel.Yas = Convert.ToInt32(txtYas.Text); personel.Telefon = txtTelefon.Text; personel.Cinsiyet = cmbCinsiyet.SelectedItem.ToString(); // Personel bilgilerini veritabanına eklemek için InsertPersonel metodunu çağırın. var kontrol = personel.UpdatePersonel(personel); // Eklenen personelleri göstermek için listeyi yenileyin dgwPersonel.DataSource = personel.GetPersonel(); if (kontrol) { // Çalışan başarıyla eklendikten sonra kontrolleri temizleyin ClearControls(); MessageBox.Show("Personel bilgileri başarıyla güncellendi."); } else MessageBox.Show("Hata!!!. Lütfen tekrar deneyin..."); } private void btnSil_Click(object sender, EventArgs e) { personel.Id = Convert.ToInt32(txtId.Text); var kontrol=personel.DeletePersonel(personel); dgwPersonel.DataSource=personel.GetPersonel(); if (kontrol) { // Çalışan başarıyla silindikten sonra kontrolleri temizleyin ClearControls(); MessageBox.Show("Personel başarıyla silindi."); } else MessageBox.Show("Hata!!!. Lütfen tekrar deneyin..."); } private void btnTemizle_Click(object sender, EventArgs e) { ClearControls(); } //Datagrid üzerinde tıklanan verileri ilgili textBox' lara aktarın. private void dgwPersonel_CellEnter(object sender, DataGridViewCellEventArgs e) { txtId.Text = dgwPersonel.CurrentRow.Cells[0].Value.ToString(); txtAdSoyad.Text = dgwPersonel.CurrentRow.Cells[1].Value.ToString(); txtYas.Text = dgwPersonel.CurrentRow.Cells[2].Value.ToString(); txtTelefon.Text = dgwPersonel.CurrentRow.Cells[3].Value.ToString(); cmbCinsiyet.Text = dgwPersonel.CurrentRow.Cells[4].Value.ToString(); } } } |
Merhaba bu uygulamayı bende yaptım ama şöyle ki bir şey daha eklemek istiyorum ama pek fazla beceremedim kişinin ismini seçtiğimiz zaman picturebox ta o kişinin resmi gözüksün istiyorum her kişi için farklı resim bunu nasıl yapabilirim acaba yardımcı olur musunuz??
Merhaba bu uygulamayı bende yaptım ama şöyle ki bir şey daha eklemek istiyorum ama pek fazla beceremedim kişinin ismini seçtiğimiz zaman picturebox ta o kişinin resmi gözüksün istiyorum her kişi için farklı resim bunu nasıl yapabilirim acaba yardımcı olur musunuz
Textbox’a girilen veritabanı tablo ismine göre, veritabanında bulunan tablodaki verileri nasıl getirebiliriz? (in C# or asp.net)
Örneğin:
(select * from kullanicilar)
“kullanıcılar”ın yerine – textbox.text kullanmak istiyorum.
(select * from textbox.text) gibi.
Katkılarınızdan dolayı şimdiden teşekkür ederim.
https://www.yazilimkodlama.com/programlama/c-sql-server-comboboxtan-secilen-tabloya-gore-veri-listeleme/
linkteki örnek yardımcı olacaktır.
program yazılır 🙂
In order to debug this project, add an executable project to this solution which references the library project. Set the executable project as the startup project.
isimli bir hata alıyorum, nasıl düzeltebilirim
MERHABA SQL SERVERDE LİSTELER HALİNDE KAYIT NASIL YAPABİLİRİZ YARDIMCI OLABİLİR MİSİNİZ?
comboboxlara veri çekmişmiydiniz? çektiyseniz de ben göremedim ve yukarıdaki kodu kendime uyarladığımda comboboxlarıma veri gelmemesi dışında herhangi bir sorun yok.