Merhaba, C# Şifre Saklama Uygulaması ile C# projeleri yazılarıma devam ediyorum. Güzel haber, bu uygulamayı yazarken videosunu da çektim. Aslında video çekmek için bu uygulamayı yazdım diyebilirim. Videosu yüklenirken bir yandan da yazısını yazıyorum. Videosu olduğu içinde yazıda çok fazla detay vermeyebilirim.
C# Şifre Saklama Uygulaması
İşte Videosu!
Bu projede aşağıdaki iki yazıdan faydalandık;
- C# SQL Connection Class Hazırlamak [Video Destekli]
- C# DataGridView’den Veri Okuma
- C# Nesne Yaklaşımlı SQL Modelleme
Önce basit bir login ekranı hazırladım. Kullanıcı adı ve şifre sordum işte kodları.
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 sifre_takip_app { public partial class login : Form { public login() { InitializeComponent(); } private void btn_cikis_Click(object sender, EventArgs e) { Close(); } private void btn_giris_Click(object sender, EventArgs e) { DataTable dt = CLS.SQLConnectionClass.Table("select kul_ad from KULLANICILAR where kul_kod = '" + txt_kullanici_adi.Text + "' and kul_pw='" + txt_sifre.Text + "'"); if (dt.Rows.Count > 0) { CLS.MyGlobals.Aktif_Kullanici_Adı = dt.Rows[0]["kul_ad"].ToString(); CLS.MyGlobals.Aktif_Kullanici_Kodu = txt_kullanici_adi.Text; this.Hide(); new Anaform().ShowDialog(); } else { MessageBox.Show("bilgiler hatalı"); } } } }
Sonrasında bir ana form açtık ve ona bir menüstrip ekledik. Ama bunu yapmaktaki amacımız bir menü yapmak değildi. Bir tane menü nesnesi ekledik ve ona hoşgeldin yazdırdık. Sonrasında ekranı ikiye böldük ve sol kısma kayıt alanı, sağ kısma ise liste koyduk. Listeye tıkladığımızda soldaki alan doluyor.
Kayıt alanımızda dört adet işlemimiz var.
- Kaydet / Güncelle
- Sil
- Yeni Kayıt / Kayıt Kopyalama
- Temizle
Zaten anlatacak fazla bir şey de yok. Kodlarımızı görelim.
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 sifre_takip_app { public partial class Anaform : Form { public Anaform() { InitializeComponent(); } private void Anaform_Load(object sender, EventArgs e) { txt_kayit_no.Text = "0"; hoşGeldinToolStripMenuItem.Text += CLS.MyGlobals.Aktif_Kullanici_Adı; Grid_Doldur(); } private void Grid_Doldur() { dataGridView1.DataSource = CLS.SQLConnectionClass.Table("select * from SIFRELER"); } private void Anaform_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); } private void btn_kaydet_Click(object sender, EventArgs e) { MYMODELS.SIFRELER.SIFRE sif = new MYMODELS.SIFRELER.SIFRE() { sif_RECno = Convert.ToInt32(txt_kayit_no.Text), sif_kul_adi_mail = txt_kul_adi.Text, sif_kul_sifre = txt_sifre.Text, sif_notlar = txt_notlar.Text, sif_site_adi = txt_site_ad.Text, sif_site_url = txt_url.Text }; txt_kayit_no.Text = MYMODELS.SIFRELER.SIFRE_Kaydet(sif).ToString(); Grid_Doldur(); } private void btn_sil_Click(object sender, EventArgs e) { MYMODELS.SIFRELER.SIFRE_Sil(Convert.ToInt32(txt_kayit_no.Text)); Temizle(); Grid_Doldur(); } private void btn_yeni_Click(object sender, EventArgs e) { txt_kayit_no.Text = "0"; } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex]; txt_kayit_no.Text = row.Cells["sif_RECno"].Value.ToString(); txt_kul_adi.Text = row.Cells["sif_kul_adi_mail"].Value.ToString(); txt_sifre.Text = row.Cells["sif_kul_sifre"].Value.ToString(); txt_notlar.Text = row.Cells["sif_notlar"].Value.ToString(); txt_site_ad.Text = row.Cells["sif_site_adi"].Value.ToString(); txt_url.Text = row.Cells["sif_site_url"].Value.ToString(); } } void Temizle() { txt_kayit_no.Text = "0"; txt_kul_adi.Text = ""; txt_sifre.Text = ""; txt_notlar.Text = ""; txt_site_ad.Text = ""; txt_url.Text = ""; } private void btn_temizle_Click(object sender, EventArgs e) { Temizle(); } } }
Burada üç adet class dosyamız var. Onları da vereyim.
CLS.MyGlobals.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace sifre_takip_app.CLS { public class MyGlobals { public static string Aktif_Kullanici_Kodu { get; set; } public static string Aktif_Kullanici_Adı { get; set; } } }
CLS.SQLConnectionClass.cs
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; namespace sifre_takip_app.CLS { public class SQLConnectionClass { private static string SQLConnectionString = @"Server = MUSTAFA\SQL2017; Database = sifre_takip_app; Trusted_Connection = True;"; private static SqlConnection con = new SqlConnection(); private static SqlDataAdapter da = new SqlDataAdapter(); private static SqlCommand com = new SqlCommand(); public static void Baglanti() { con = new SqlConnection(SQLConnectionString); if (con.State == System.Data.ConnectionState.Closed) { con.Open(); } } public static object Command(string query) { object obj; com.Connection = con; // SqlCommand com.CommandText = query; // SqlCommand obj = com.ExecuteScalar(); return obj; } public static DataTable Table(string query) { DataTable dt = new DataTable(); com.Connection = con; // SqlCommand com.CommandText = query; // SqlCommand da.SelectCommand = com; // // SqlCommand'ın bir select sorgusu olduğunu belirtiyoruz. da.Fill(dt); return dt; } } }
MYMODELS.SIFRELER.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sifre_takip_app.MYMODELS { public class SIFRELER { public class SIFRE { public int sif_RECno = 0; public string sif_site_adi = ""; public string sif_site_url = ""; public string sif_kul_adi_mail = ""; public string sif_kul_sifre = ""; public string sif_notlar = ""; } public static int SIFRE_Kaydet(SIFRE sif) { if (sif.sif_RECno == 0) { int recno = Convert.ToInt32(CLS.SQLConnectionClass.Command("" + " INSERT INTO [dbo].[SIFRELER] " + " ([sif_site_adi] " + " ,[sif_site_url] " + " ,[sif_kul_adi_mail] " + " ,[sif_kul_sifre] " + " ,[sif_notlar] " + " ,[sif_kayit_tarih] " + " ,[sif_guncelleme_tarih]) " + " OUTPUT INSERTED.sif_RECno " + " VALUES " + " ('" + sif.sif_site_adi + "' " + " ,'" + sif.sif_site_url + "' " + " ,'" + sif.sif_kul_adi_mail + "' " + " ,'" + sif.sif_kul_sifre + "' " + " ,'" + sif.sif_notlar + "' " + " , getdate() " + " , getdate() ) ")); MessageBox.Show("Kayıt Başarılı"); return recno; } else { CLS.SQLConnectionClass.Command("" + " update [dbo].[SIFRELER] set " + " [sif_site_adi] = '" + sif.sif_site_adi + "' " + " ,[sif_site_url] = '" + sif.sif_site_url + "' " + " ,[sif_kul_adi_mail] = '" + sif.sif_kul_adi_mail + "' " + " ,[sif_kul_sifre] = '" + sif.sif_kul_sifre + "' " + " ,[sif_notlar] = '" + sif.sif_notlar + "' " + " ,[sif_guncelleme_tarih] = getdate() " + " WHERE sif_RECno = " + sif.sif_RECno + " " ); MessageBox.Show("Güncelleme Başarılı"); return sif.sif_RECno; } } public static void SIFRE_Sil(int recno) { CLS.SQLConnectionClass.Command(" delete from [dbo].[SIFRELER] WHERE sif_RECno = " + recno + ""); MessageBox.Show("Silme Başarılı"); } } }
Hepsi bu kadardı :D
Bu yazımızda bu kadardı. Diğer derslerde görüşmek üzere…
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Ayrıca bu projenin Github Sayfasına bağlantıya tıklayarak ulaşabilirsiniz.
Discord’a katılmayı unutmayın.
Sağlıcakla ve kodla kalın….