c# Desktop

SqLite Programında Uyeler Tablosuyla İlgili Tüm İşlemleri Gerçekleştiren c# Form Uygulaması

Bir veri tabanında tablolar ile ilgili hangi işlemler yer almaktadır. Tablolara kayıt girişi nasıl yapılır. Tabloda kayıt silme nasıl gerçekleştirilir. Tabloda kayıtlar nasıl güncellenir. Bir tabloda tüm kayıtlar nasıl listelenir. Belirtilen kriterlere göre tabloda kayıt araması nasıl gerçekleştirilir. Bir tabloda Sql deyimleri nasıl kullanılır. İşte tüm bu soruların cevabını bu uygulamada bulacaksınız.

Hatırlarsanız SqLite programının bir projeye nasıl eklendiğini daha önce göstermiştik. Burada daha önce anlatılan tüm konuların özetinin yer alacağı bir uygulama yapacağız. Form sayfasının görünümü aşağıdaki gibi olacaktır.

Adım 1: Visual Studio programını açalım.

Adım 2: UyeTakipProgramiForm isminde bir masaüstü projesi oluşturalım.

Adım 3: Projeye eklenen formun ismini frmBilgiler, başlığını Üye Takip Programı, başlangıç pozisyonunu ekranın ortasında olarak değiştirelim. Boyutunu 600 ve 500 yapalım.

Adım 4: Projenin taslağına bakarsanız nesneler form sayfasında düzgün bir şekilde sıralanmışlar. Bu işlemleri sırasıyla gerçekleştirmeye başlayalım. Form sayfasına 1 adet label ekleyelim. Başlığını "Adı : " olarak değiştirelim. Label nesnesinin karşısına 1 adet textbox ekleyelim. İsmini txtAdi olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 5: 1 adet label daha ekleyelim. Başlığını "Soyadı : " olarak değiştirelim. Karşısına 1 adet textbox ekleyelim. İsmini txtSoyadi olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 6: 1 adet label daha ekleyelim. Başlığını "Kullanıcı Adı : " olarak değiştirelim. Karşısına 1 adet textbox ekleyelim. İsmini txtUsername olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 7: 1 adet label daha ekleyelim. Başlığını "Şifre : " olarak değiştirelim. Karşısına 1 adet textbox ekleyelim. İsmini txtPassword olarak değiştirelim.Fontun büyüklüğünü 12 yapalım.

Adım 8: 1 adet button ekleyelim. Başlığını "Kaydet" olarak değiştirelim. İsmini btnKaydet olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 9: 1 adet button ekleyelim. Başlığını "Düzelt" olarak değiştirelim. İsmini btnDuzelt olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 10: 1 adet button ekleyelim. Başlığını "Sil" olarak değiştirelim. İsmini btnSil olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 11: 1 adet button ekleyelim. Başlığını "Ara" olarak değiştirelim. İsmini btnAra olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 12: 1 adet button ekleyelim. Başlığını "İlk" olarak değiştirelim. İsmini btnFirst olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 13: 1 adet button ekleyelim. Başlığını "Önceki" olarak değiştirelim. İsmini btnBack olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 14: 1 adet button ekleyelim. Başlığını "Sonraki" olarak değiştirelim. İsmini btnNext olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 15: 1 adet button ekleyelim. Başlığını "Son" olarak değiştirelim. İsmini btnLast olarak değiştirelim. Fontun büyüklüğünü 12 yapalım.

Adım 16: 1 adet datagridview ekleyelim. İsmini dgvListe olarak değiştirelim. 

Adım 17: Şimdi de kutunun içinde mesaj görüntüleyelim. Ben txtAdi kutusu için gerekli kodları yazacağım. Diğerlerini siz yapacaksınız. Öncelikle form üzerindeyken farenin sol tuşuna iki defa basalım. 
 

            txtAdi.Text = "Adınızı Girin";

            txtAdi.ForeColor = Color.LightGray;
Daha sonra txtAdi kutusunun Enter olayına aşağıdaki kodu yazalım.
private void txtAdi_Enter(object sender, EventArgs e)
{
if(txtAdi.Text == "Adınızı Girin")
{
txtAdi.Text = "";
txtAdi.ForeColor= Color.Black;
}
}
Şimdi de Leave olayına aşağıdaki kodları yazalım.
        private void txtAdi_Leave(object sender, EventArgs e)
        {
            if (txtAdi.Text == "")
            {
                txtAdi.Text = "Adınızı Girin";
                txtAdi.ForeColor = Color.LightGray;
            }
        }
 
Adım 18: Bu arada şifre girişi esnasında şifrenin ekranda görünmesini istemeyiz. Buna göre txtPassword kutusununun UseSystemPasswordChar özelliğini true yapalım.
 
Adım 19: Şimdi butonların üzerine gelindiğinde açıklama satırı gelmesini sağlayalım. Ben btnKaydet butonu için gerekli işlemleri yapacağım. Siz diğer butonlar için gerekli işlemleri gerçeklaştireceksiniz. Aşağıdaki kodları formun load olayına yazalım.
            ToolTip tt = new ToolTip();
            tt.SetToolTip(btnKaydet, "Bilgileri kaydetme işlemi yapar...");
Adım 20: Proje çalıştırıldığında form sayfasındaki tüm kutuların içinin temizlenmesini sağlayalım. Bu işlemi gerçekleştirmek için Temizle() isminde bir metot tanımlayalım. Bu fonksiyonumuz aşağıdaki gibi olacaktır.
        private void Temizle()
        {
            txtAdi.Text = "";
            txtSoyadi.Text = "";
            txtUsername.Text = "";
            txtPassword.Text = "";
        }
Tanımladığımız bu fonksiyonu formun load olayında çağıralım.
Adım 21: İmlecin form sayfası çalıştığında txtAdi kutusuna konumlanmasını sağlayalım. Aşağıdaki kodu Temizle() fonksiyonunda alt satıra yazalım.
            txtAdi.Focus();
Adım 22: Uyeler tablosunda Adi, Soyadi, Username ve Password alanları boş geçilmeyecekti. Kullanıcının bu alanlara mutlaka değer girmesi gerekmektedir. Ben burada txtAdi kutusuna ait kodları yazacağım. Diğerlerini sizler tamamlayacaksınız. Hatırlarsanız txtAdi kutusunda mesaj olarak "Adınızı Girin" sabit yazısı mevcuttu. Öncelikle bu yazıyı kontrol etmeliyiz. Daha sonra txtAdi kutusunun Validating olayını oluşturmamız gerekiyor. Hata kontrolü sonucunda kullanıcının bilgilendırılmesi için ErrorProvider nesnesini projeye eklemeliyiz. Artık Validating olayını yazabiliriz.
        private void txtAdi_Validating(object sender, CancelEventArgs e)
        {
            if (txtAdi.Text=="Adınızı Girin" || txtAdi.Text=="")
            {
                e.Cancel = true;
                txtAdi.Focus();
                errorProvider1.SetError(txtAdi, "Lütfen burayı boş bırakmayınız...");
            }
            else
            {
                e.Cancel = false;
                errorProvider1.SetError(txtAdi, "");
            }
        }
Adım 23: SqLite kütüphanesini projeye ekleyelim. Aşağıdaki linkten ilgili konuya ulaşabilirsiniz.

https://www.maarificedid.com/makalegoster/3263/csharp-form-uygulamalarinda-sqlite-kullanimi

Adım 24: skorlar.s3db veri tabanını oluşturalım. Aşağıdaki linkten ilgili konuya ulaşabilirsiniz.

https://www.maarificedid.com/makalegoster/3264/csharp-form-uygulamalarinda-sqlite-veritabanini-olusturma

Adım 25: Uyeler tablosunu oluşturalım. Aşağıdaki linkten ilgili konuya ulaşabilirsiniz.

https://www.maarificedid.com/makalegoster/3265/csharp-form-uygulamalarinda-sqlite-veritabaninda-uyeler-tablosunu-olusturma

Adım 26: Şimdi kayıt girişi ve listeleme işlemini gerçekleştirelim. Aşağıdaki linkten ilgili konuya ulaşabilirsiniz.

https://www.maarificedid.com/makalegoster/3427/csharp-form-uygulamalarinda-sqlite-tablosuna-kayit-girisini-gerceklestirme

Projemize ait kodlar aşağıdaki gibi olacaktır.

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Data.SQLite;
using System.IO;
using System.Data;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SQLiteConnection con;
        SQLiteDataAdapter da;
        SQLiteCommand cmd;
        DataSet ds;
        private void Form1_Load(object sender, EventArgs e)
        {
            Temizle();
 
            txtAdi.Text = "Adınızı Girin";
            txtAdi.ForeColor = Color.Gray;
            txtSoyadi.Text = "Soyadınızı Girin";
            txtSoyadi.ForeColor = Color.Gray;
            txtUsername.Text = "Kullanıcı Adınızı Girin";
            txtUsername.ForeColor = Color.Gray;
            txtPassword.Text = "Şifrenizi Girin";
            txtPassword.ForeColor = Color.Gray;
 
            ToolTip tt = new ToolTip();
            tt.SetToolTip(btnKaydet, "Bilgileri kaydetme işlemi yapar...");
            tt.SetToolTip(btnDuzelt, "Bilgileri düzeltme işlemi yapar...");
            tt.SetToolTip(btnSil, "Bilgileri silme işlemi yapar...");
            tt.SetToolTip(btnAra, "Bilgileri arama işlemi yapar...");
            tt.SetToolTip(btnFirst, "İlk kayda gider...");
            tt.SetToolTip(btnBack, "Önceki kayda gider...");
            tt.SetToolTip(btnNext, "Sonraki kayda gider...");
            tt.SetToolTip(btnLast, "Son kayda gider...");
 
            if (!File.Exists("skorlar.s3db"))
            {
                SQLiteConnection.CreateFile("skorlar.s3db");
                string sql = @"CREATE TABLE Uyeler(
                               Kodu INTEGER PRIMARY KEY AUTOINCREMENT ,
                               Adi         VARCHAR(25)       NOT NULL,
                               Soyadi      VARCHAR(25)       NOT NULL,
                               UserName    VARCHAR(25)       NOT NULL,
                               Password    VARCHAR(25)       NOT NULL
                            );";
                con = new SQLiteConnection("Data Source=skorlar.s3db;Version=3;");
                con.Open();
                cmd = new SQLiteCommand(sql, con);
                cmd.ExecuteNonQuery();
                con.Close();
            }
            Listele();
        }
 
        private void Temizle()
        {
            txtAdi.Text = "";
            txtSoyadi.Text = "";
            txtUsername.Text = "";
            txtPassword.Text = "";
            txtAdi.Focus();
        }
 
        private void txtAdi_Enter(object sender, EventArgs e)
        {
            if (txtAdi.Text == "Adınızı Girin")
            {
                txtAdi.Text = "";
                txtAdi.ForeColor = Color.Black;
            }
        }
 
        private void txtAdi_Leave(object sender, EventArgs e)
        {
            if (txtAdi.Text == "")
            {
                txtAdi.Text = "Adınızı Girin";
                txtAdi.ForeColor = Color.Gray;
            }
        }
 
        private void txtSoyadi_Enter(object sender, EventArgs e)
        {
            if (txtSoyadi.Text == "Soyadınızı Girin")
            {
                txtSoyadi.Text = "";
                txtSoyadi.ForeColor = Color.Black;
            }
        }
 
        private void txtSoyadi_Leave(object sender, EventArgs e)
        {
            if (txtSoyadi.Text == "")
            {
                txtSoyadi.Text = "Soyadınızı Girin";
                txtSoyadi.ForeColor = Color.Gray;
            }
        }
 
        private void txtUsername_Enter(object sender, EventArgs e)
        {
            if (txtUsername.Text == "Kullanıcı Adınızı Girin")
            {
                txtUsername.Text = "";
                txtUsername.ForeColor = Color.Black;
            }
        }
 
        private void txtUsername_Leave(object sender, EventArgs e)
        {
            if (txtUsername.Text == "")
            {
                txtUsername.Text = "Kullanıcı Adınızı Girin";
                txtUsername.ForeColor = Color.Gray;
            }
        }
 
        private void txtPassword_Enter(object sender, EventArgs e)
        {
            if (txtPassword.Text == "Şifrenizi Girin")
            {
                txtPassword.Text = "";
                txtPassword.ForeColor = Color.Black;
            }
        }
 
        private void txtPassword_Leave(object sender, EventArgs e)
        {
            if (txtPassword.Text == "")
            {
                txtPassword.Text = "Şifrenizi Girin";
                txtPassword.ForeColor = Color.Gray;
            }
        }
 
        private void txtAdi_Validating(object sender, CancelEventArgs e)
        {
            if (txtAdi.Text == "Adınızı Girin" || txtAdi.Text == "")
            {
                e.Cancel = true;
                txtAdi.Focus();
                errorProvider1.SetError(txtAdi, "Lütfen burayı boş bırakmayınız...");
            }
            else
            {
                e.Cancel = false;
                errorProvider1.SetError(txtAdi, "");
            }
        }
 
        private void txtSoyadi_Validating(object sender, CancelEventArgs e)
        {
            if (txtSoyadi.Text == "Soyadınızı Girin" || txtAdi.Text == "")
            {
                e.Cancel = true;
                txtSoyadi.Focus();
                errorProvider1.SetError(txtSoyadi, "Lütfen burayı boş bırakmayınız...");
            }
            else
            {
                e.Cancel = false;
                errorProvider1.SetError(txtSoyadi, "");
            }
        }
 
        private void txtUsername_Validating(object sender, CancelEventArgs e)
        {
            if (txtUsername.Text == "Kullanıcı Adınızı Girin" || txtAdi.Text == "")
            {
                e.Cancel = true;
                txtUsername.Focus();
                errorProvider1.SetError(txtUsername, "Lütfen burayı boş bırakmayınız...");
            }
            else
            {
                e.Cancel = false;
                errorProvider1.SetError(txtUsername, "");
            }
        }
 
        private void txtPassword_Validating(object sender, CancelEventArgs e)
        {
            if (txtPassword.Text == "Şifrenizi Girin" || txtAdi.Text == "")
            {
                e.Cancel = true;
                txtPassword.Focus();
                errorProvider1.SetError(txtPassword, "Lütfen burayı boş bırakmayınız...");
            }
            else
            {
                e.Cancel = false;
                errorProvider1.SetError(txtPassword, "");
            }
        }
 
        private void btnKaydet_Click(object sender, EventArgs e)
        {
            string ad, soyad, kullanici, sifre;
 
            ad = txtAdi.Text;
            soyad = txtSoyadi.Text;
            kullanici = txtUsername.Text;
            sifre = txtPassword.Text;
 
            cmd = new SQLiteCommand();
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = "INSERT INTO Uyeler(Adi, Soyadi, Username, Password) VALUES ('" + ad + "','" + soyad + "','" + kullanici + "','" + sifre + "')";
            cmd.ExecuteNonQuery();
            con.Close();
            Listele();
        }
 
        private void Listele()
        {
            con = new SQLiteConnection("Data Source=skorlar.s3db;Version=3;");
            da = new SQLiteDataAdapter("SELECT * FROM Uyeler", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "Uyeler");
            dgrvListe.DataSource = ds.Tables["Uyeler"];
            con.Close();
        }
    }
}

Adım 27: Proje çalıştırıldığında imleç txtAdi kutusuna konumlanmaktadır. Ancak programdan çıkmak istediğimizde txtAdi kutusunun içi boş olduğu için program izin vermeyecektir. Projede yer alan bir butona tıkladığımızda da yine aynı sorunla karşılaşmaktayız. Bu sorunu nasıl çözeceğiz. Bu sorunu çözmek için Form nesnesinin formClosing olayını kullanacağız. Öncelikle bu olayını tanımlayalım. Aşağıdaki gibi metodumuzu oluşturalım.

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = false;
        }

Projeyi çalıştrıdığımızda artık rahatlıkla form sayfası kapatılabilmektedir.

Adım 29: Dikkat ettiyseniz txtPassword kutusunda "Şifrenizi Giriniz" mesajı yerine * karakteri görüntülenmektedir. Şimdi bu sorunu çözelim. Hatırlarsanız UseSystemPasswordChar özelliğini kullanarak * karakteri gösteriliyordu. Şimdi bu özelliği geçici olarak iptal edeceğiz. Temizle() metodunu aşağıdaki gibi değiştiriniz.

        private void Temizle()
        {
            txtAdi.Text = "";
            txtSoyadi.Text = "";
            txtUsername.Text = "";
            txtPassword.Text = "";
            txtPassword.UseSystemPasswordChar = false;
            txtAdi.Focus();
        }
 

Daha sonra txtPassword kutusunun Enter olayını aşağıdaki gibi değiştiriniz.

        private void txtPassword_Enter(object sender, EventArgs e)
        {
            if (txtPassword.Text == "Şifrenizi Girin")
            {
                txtPassword.Text = "";
                txtPassword.ForeColor = Color.Black;
                txtPassword.UseSystemPasswordChar = true;
            }
        }

Projeyi çalıştırdığınızda şifre kutusunda mesaj görüntülenecektir.

Adım 30: Kaydet butonuna basıldığında kullanıcıdan onay alınmasını sağlayalım. Böylece istenilmeyen kayıtlar tabloda yer almamış olacaktır. Kaydetme işlemini yeniden düzenleyelim.

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            ad = txtAdi.Text;
            soyad = txtSoyadi.Text;
            kullanici = txtUsername.Text;
            sifre = txtPassword.Text;
 
            DialogResult cevap = MessageBox.Show("Tabloya kaydedeyim mi?", "Kaydetme İşlemi", MessageBoxButtons.YesNo);
 
            if (cevap==DialogResult.Yes)
            {
                cmd = new SQLiteCommand();
                con.Open();
                cmd.Connection = con;
                cmd.CommandText = "INSERT INTO Uyeler(Adi, Soyadi, Username, Password) VALUES ('" + ad + "','" + soyad + "','" + kullanici + "','" + sifre + "')";
                cmd.ExecuteNonQuery();
                con.Close();
                Listele();
            }
        }

Adım 31: Şimdi düzeltme işlemini yapalım. Düzeltme işleminin yapılabilmesi için tabloda kayıt olmalı ve istenen kaydın seçili olması gerekir. Bu işlemi gerçekleştirmek için DataGridView nesnesinden yararlanacağız. Öncelikle bu nesnenin bazı özelliklerini düzenleyelim. AllowUserToAddRows özelliğini false yapalım. EditMode özelliğini EditProgrammatically yapalım. MultiSelect özelliğini false yapalım. SelectionMode özelliğini FullRowSelect yapalım. Fontun büyüklüğünü 12 yapalım. DataGridView içinden herhangi bir kaydı seçmek için SelectionChanged olayından yararlanacağız. Bu arada seçilen kayıt üzerinde silme ve düzeltme işlemlerini gerçekelştirmek için int tipinde kodu değişkenini global olarak tanımlayalım.

        private void dgvListe_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvListe.SelectedCells.Count > 0)
            {
                int i = dgvListe.SelectedCells[0].RowIndex;
                DataGridViewRow selectedRow = dgvListe.Rows[i];
                kodu = Convert.ToInt32(selectedRow.Cells[0].Value);
                txtAdi.Text = Convert.ToString(selectedRow.Cells[1].Value);
                txtSoyadi.Text = Convert.ToString(selectedRow.Cells[2].Value);
                txtUsername.Text = Convert.ToString(selectedRow.Cells[3].Value);
                txtPassword.Text = Convert.ToString(selectedRow.Cells[4].Value);
                txtAdi.Focus();
            }
        }

Var olan kayıtlardan biri seçildiğinde kayda ait bilgiler ekranda görüntülenir.

Adım 32: Proje çalıştırıldığında herhangi bir işlem yapılmamasına rağmen ilk kayıt ekranda görüntülenir. Görüntülenen kayıt üzerinde kullanıcının ne yapacağı belli değildir. Zira formda yer alan tüm butonlar aktif durumdadır. Öncelikle butonların durumlarını kontrol edelim. Form yüklendiğinde Kaydet ve Ara butonları aktif olmalı, Düzelt ve Sil butonları ise pasif olmalıdır. Buna göre Temizle() metodunu yeniden düzenleyelim.

        private void Temizle()
        {
            txtAdi.Text = "";
            txtSoyadi.Text = "";
            txtUsername.Text = "";
            txtPassword.Text = "";
            txtPassword.UseSystemPasswordChar = false;
            txtAdi.Focus();
 
            btnKaydet.Enabled = true;
            btnDuzelt.Enabled = false;
            btnSil.Enabled = false;
            btnAra.Enabled = true;
        }

Adım 33: Projeyi çalıştıralım. Ekranda ilk kayıt görüntülenmektedir. Halbuki herhangi bir kayıt seçimi yapılmamıştı. Proje çalıştırıldı anda herhangi bir kayıt seçiminin olmamasını sağlayalım. Bunun için bool tipinde bir sec değişkeni tanımlayalım. İlk değeri de false olsun. Daha sonra Listele metodunu aşağıdaki gibi düzenleyelim.

        private void Listele()
        {
            con = new SQLiteConnection("Data Source=skorlar.s3db;Version=3;");
            da = new SQLiteDataAdapter("SELECT * FROM Uyeler", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "Uyeler");
            dgvListe.DataSource = ds.Tables["Uyeler"];
            con.Close();
 
            if (!sec)
            {
                sec = true;
                dgvListe.ClearSelection();
            }
        }

İşimiz bitmedi. DataGridView nesnesinin SelectionChanged olayını şöyle düzenleyelim.

        private void dgvListe_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvListe.SelectedCells.Count > 0 && sec == true)
            {
                int i = dgvListe.SelectedCells[0].RowIndex;
                DataGridViewRow selectedRow = dgvListe.Rows[i];
                kodu = Convert.ToInt32(selectedRow.Cells[0].Value);
                txtAdi.Text = Convert.ToString(selectedRow.Cells[1].Value);
                txtSoyadi.Text = Convert.ToString(selectedRow.Cells[2].Value);
                txtUsername.Text = Convert.ToString(selectedRow.Cells[3].Value);
                txtPassword.Text = Convert.ToString(selectedRow.Cells[4].Value);
                txtAdi.Focus();
            }
        }

Projeyi çalıştırdığımızda artık satır seçilmeyecektir.

Adım 34: Tablodan bir kayıt seçildiğinde artık Düzeltme ve Silme butonları aktif, Kaydetme ve Arama butonları pasif olacaktır. Buna göre DataGridView nesnesinin SelectionChanged olayını şöyle düzenleyelim.

        private void dgvListe_SelectionChanged(object sender, EventArgs e)
        {
            if (dgvListe.SelectedCells.Count > 0 && sec == true)
            {
                int i = dgvListe.SelectedCells[0].RowIndex;
                DataGridViewRow selectedRow = dgvListe.Rows[i];
                kodu = Convert.ToInt32(selectedRow.Cells[0].Value);
                txtAdi.Text = Convert.ToString(selectedRow.Cells[1].Value);
                txtSoyadi.Text = Convert.ToString(selectedRow.Cells[2].Value);
                txtUsername.Text = Convert.ToString(selectedRow.Cells[3].Value);
                txtPassword.Text = Convert.ToString(selectedRow.Cells[4].Value);
                txtAdi.Focus();
 
                btnKaydet.Enabled = false;
                btnDuzelt.Enabled = true;
                btnSil.Enabled = true;
                btnAra.Enabled = false;
            }
        }

Adım 35: Şimdi düzeltme işlemini yapabiliriz. Bunun için btnDuzelt butonunun Click olayını oluşturalım. Bu metodu aşağıdaki gibi düzenleyelim.

        private void btnDuzelt_Click(object sender, EventArgs e)
        {
            ad = txtAdi.Text;
            soyad = txtSoyadi.Text;
            kullanici = txtUsername.Text;
            sifre = txtPassword.Text;
 
            DialogResult cevap = MessageBox.Show("Kaydı güncelleyeyim mi?", "Düzenleme İşlemi", MessageBoxButtons.YesNo);
 
            if (cevap == DialogResult.Yes)
            {
                cmd = new SQLiteCommand();
                con.Open();
                cmd.Connection = con;
                cmd.CommandText = "UPDATE Uyeler SET Adi = '" + ad + "', Soyadi= '" + soyad + "', Username= '" + kullanici + "', Password= '" + sifre + "' WHERE kodu =" + kodu;
                cmd.ExecuteNonQuery();
                con.Close();
                Listele();
            }
 
        }

Adım 36: Güncelleme işlemi bittikten sonra Kaydet ve Ara butonunun aktif, Düzelt ve Sil butonlarının pasif olması gerekir. Form sayfasında herhangi bir kaydın olmaması gerekir.


İlgili Makaleler
Veri Girişi Doğrulama (Input Validation)
Basit Veri Bağlama (Simple Data Binding)
c# Programında Bigpara Sayfasından Borsa Verilerini Selenium Kütüphanesini Kullanarak Çekme
Kompleks Veri Bağlama (Complex Data Binding)
TabControl Panelini Kullanarak Lokantalar İçin Müşteri Siparişi Alan c# Form Uygulaması
Veri Girişi Maskeleme (MaskedTextBox)
Yıkıcı Metotlar (Destructors)
Konsol Ekranında Kod Yazma ve Çalıştırma
Kaçan Buton Oyununu Yapan c# Uygulaması
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Kodlama
Form Sınıfı
Form Sınıfına Ait Bazı Olayların ve Özelliklerin Kullanılmasına Ait Örnek Uygulama
Verilen İki Matrisi Çarpan Programı c# Dilinde Form Ortamında Yapınız
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
Metodu Sonlandırma
GroupBox Paneliyle Gruplandırılan Bilgisayar Parçalarının Satışını Yapan c# Form Uygulaması
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
Sayısal Loto Çekilişini Yapan c# Uygulaması
Yapıcı Metotlar (Constructors)

Yorum Ekle
   
Kötü
İyi