Ana içeriğe atla

C# Login Form

 

 using System;

using System.Data.SqlClient;

using System.Data;

using System.Windows.Forms;


namespace WinFormsAppYoutube

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        //Veri tabanı yolu

        //SqlConnection conn = new SqlConnection(@"Data Source=SERVER YOLU;Initial Catalog=Server TABLO ADI;Integrated Security=True;");

        SqlConnection conn = new SqlConnection(@"Data Source=DESKTOP-0B1GIRL\SQLEXPRESS;Initial Catalog=Youtube;Integrated Security=True;");


        private void Form1_Load(object sender, EventArgs e)

        {

            // Form yüklenirken yapılacak işlemler

        }


        private void button_login_Click(object sender, EventArgs e)

        {

            //Giriş için Kullanıcı Bilgilerinin alınması

            string username = text_username.Text;

            string user_password = text_password.Text;


            try

            {

                //veri tabanı kullanıcı bilgileri: Login Form

                //Tablodaki Parametlerin tanıtılması(Tablo Başlıkları)

                string query = "SELECT * FROM Login_new WHERE username = @username AND password = @password";

                SqlCommand cmd = new SqlCommand(query, conn);

                cmd.Parameters.AddWithValue("@username", username);

                cmd.Parameters.AddWithValue("@password", user_password);


                //SqlDataAdapter: SQL Server veritabanını doldurmak ve güncelleştirmek için kullanılan bir dizi veri komutunu DataSet ve veritabanı bağlantısını temsil eder. Bu sınıf devralınamaz.

                SqlDataAdapter sda = new SqlDataAdapter(cmd);

                DataTable dtable = new DataTable();

                //.Fill Veri Tabanındaki verileri kullanıcının girmiş olduğu veriler ile karşılaştırır.

                sda.Fill(dtable);


                if (dtable.Rows.Count > 0)

                {

                    // Giriş başarılı olması durumunda Form2 ye giriş yapar

                    MenuForm form2 = new MenuForm();

                    form2.Show();

                    this.Hide();

                }

                else

                {

                    MessageBox.Show("Invalid login details", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    text_username.Clear();

                    text_password.Clear();

                    text_username.Focus();

                }

            }

            catch (Exception ex)

            {

                MessageBox.Show("ERROR: " + ex.Message);

            }

            finally

            {

                conn.Close();

            }

        }



        private void button_clear_Click(object sender, EventArgs e)

        {

            //Login Formda girilen bilgilerin temizlenmesi

            text_username.Clear();

            text_password.Clear();

            text_username.Focus();

        }


        private void button_exit_Click(object sender, EventArgs e)

        {

            //Exit Buton çıkış uyarı denetimi

            DialogResult res = MessageBox.Show("Do you want to exit", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (res == DialogResult.Yes)

            {

                //Exit Buton uyarı sırasında mesaja Yes dendiğinde Formu kapatma

                Application.Exit();

            }

        }

    }

}



SqlDataAdapter Neden Kullanılır?

  1. Veritabanı ve Uygulama Arasında Köprü Görevi Görmesi:

    • SqlDataAdapter, veritabanı komutlarını (SELECT, INSERT, UPDATE, DELETE) uygulamaya bağlamanızı sağlar. Bu komutları kullanarak veritabanından veri çekebilir veya veri tabanına veri ekleyip güncelleyebilirsiniz.
  2. Bağlantısız Veri İşleme:

    • SqlDataAdapter, veritabanıyla sürekli bir bağlantıya gerek kalmadan veri almayı sağlar. Örneğin, verileri DataTable veya DataSet gibi bellek içi veri yapılarında tutar ve uygulamada bu veriler üzerinde işlem yapmanıza olanak tanır. Böylece, veri üzerinde işlem yaparken veritabanıyla sürekli bağlantı kurmaya gerek kalmaz, bu da performansı artırır.
  3. Veriyi DataSet veya DataTable Yapılarına Doldurmak İçin Kullanılır:

    • SqlDataAdapter, DataTable veya DataSet gibi yapıların içine veriyi almak için kullanılır.


  1. Veriyi Güncelleme ve Senkronize Etme:

    • SqlDataAdapter, Update yöntemi ile DataTable içindeki değişiklikleri veritabanına yansıtabilir. Yani, uygulamada yaptığınız güncellemeleri, veritabanıyla senkronize etmek istediğinizde SqlDataAdapter işinizi kolaylaştırır. InsertCommand, UpdateCommand, DeleteCommand gibi komutlar ile veritabanına veri güncelleme işlemleri yapılabilir.

SqlDataAdapter Kullanımının Avantajları

  • Bağlantısız Veri İşlemleri: Sürekli bağlantıya ihtiyaç duymadan veri alıp güncelleyebilme.
  • Esnek Veri İşleme: DataSet ve DataTable gibi yapılara veri aktarıp işleyebilme.
  • Performans: Veriyi tek bir bağlantı aç-kapat işlemiyle alır ve bellekten işler; sürekli bağlantı kurup kapatma ihtiyacını azaltır.
SqlDataAdapter : Verileri aldıktan sonra DataSet yardımı ile veri tabanı bağlantısını açıp kapatır. Böylelikle veriler veri tabanına işlenir.

SqlConnection : Veri tabanı bağlantısını açtıktan sonra verileri doğrudan veri tabanına gönderir ve bağlantıyı sonra kapatır  

DataSet Tam Olarak Nedir?

  • DataSet; bir veya birden fazla DataTable nesnesinden oluşan bir veri koleksiyonudur.
  • Verileri bellekte tutar ve üzerinde işlem yapılmasını sağlar.
  • Tablolar arası ilişki (Foreign Key gibi) tanımlanabilir ve bu ilişkiler doğrultusunda veri manipülasyonu yapılabilir.
  • Genellikle çoklu tablo içeren sorgular veya birden fazla tabloyu aynı anda işlemek gerektiğinde tercih edilir.
yani dataSet içinde tutmuş olduğu verileri işlem bittikten sonra anlık olarak veri tabanı bağlantısını açıyor ve verileri güncelleme ekleme gibi işlemleri yaptıktan sonra bağlantıyı kapatıyor.


DataSet Nerelerde Kullanılır?

  • Veritabanı Bağlantısı Olmadan Veri İşlemek İçin: DataSet, veritabanına bağlı kalmadan veriyi işlemeye olanak tanır. Veriler DataSet'e yüklendikten sonra veritabanı bağlantısı kapatılabilir ve veriler bellek içinde işlenebilir.
  • Çoklu Tablo Yönetimi İçin: DataSet, içinde birden fazla DataTable içerebilir, yani birden fazla tabloyu aynı anda çekmek ve üzerinde işlem yapmak istediğinizde uygun bir yapı sunar.
  • Veri Senkronizasyonu İçin: DataSet içinde yapılan değişiklikler (ekleme, silme, güncelleme) gerektiğinde DataAdapter aracılığıyla veritabanına yansıtılabilir.

Bir ya da birden fazla satırların sonuç olarak döneceği sorgularda SqlCommand' ın ExecuteReader özelliği kullanılmaktadır. ExecuteReader geriye SqlDataReader tipinde veri döndürmektedir.
SqlDataReader, sadece okunabilir olarak kullanılmaktadır. Satır satır okuma işlemi yapılmaktadır. SqlDataReader kullanımı boyunca veritabanı bağlantısı açık olacaktır. Çünkü SqlDataReader veritabanı ile bağlantılı olarak çalışmaktadır. Okuma işlemi sona erdiğinde SqlDataReader bağlantısınında kapatılması gerekmektedir.

Yorumlar

Bu blogdaki popüler yayınlar

C# Delete

//using System.Data.SqlClient; //Yeni Güncelleme geldi //Araçlar>NuGet Paket Yöneticisi>Paket yöneticisi Konsole //Install-Package Microsoft.Data.SqlClient //Kodu Yapıştırdık //using System.Data.SqlClient;  Microsoft.Data.SqlClient şeklinde değiştir ve Sorun Çözüldü //Problem SqlConnection bağlantısının altı ve üzeri çizili idi yeni version 9 geldiği için yukarıdaki değişiklikler yapıldı using Microsoft.Data.SqlClient; namespace Update {     public partial class Form1 : Form     {         SqlConnection sqlBaglanti = new SqlConnection(@"Data Source=DESKTOP-0B1GIRL\SQLEXPRESS;Initial Catalog=TestVT;Integrated Security=True;TrustServerCertificate=True");         public Form1()         {             InitializeComponent();         }         //Güncelleme İşlemi         private void button1_Click(object sender, Even...

C# Forms ve ADO.NET ile SQL Server 2022'de SQLConnection bağlantısı ile INSERT İşlemi

// SQL bağlantı yolu için sistem paketinin yüklenmesi using System; using System.Data.SqlClient; using System.Windows.Forms; namespace VeriTabanıTestProjesi {     public partial class Form1 : Form     {         // SQL bağlantı nesnesinin tanımlanması         SqlConnection sqlBaglanti = new SqlConnection(@"Data Source=DESKTOP-0B1GIRL\SQLEXPRESS;Initial Catalog=TestVT;Integrated Security=True");         public Form1()         {             InitializeComponent();         }         private void button1_Click(object sender, EventArgs e)         {             // Veri Tabanında oluşabilecek hataların yakalanması             try             {                 // SQL bağlantısının a...

Microsoft.Data.SqlClient Örnek VeriTabanı

using System; using System.Data; using Microsoft.Data.SqlClient;//Install-Package Microsoft.Data.SqlClient using System.Windows.Forms; namespace Sql_Try {     public partial class Form1 : Form     {         SqlConnection sqlVT = new SqlConnection(@"Data Source=DESKTOP-0B1GIRL;Initial Catalog=My_Form;Integrated Security=True;Encrypt=True;Trust Server Certificate=True");         public Form1()         {             InitializeComponent();         }         private void button2_Click(object sender, EventArgs e)         {             Application.Exit();         }         private void button1_Click(object sender, EventArgs e)         {             string Name = textBox_isim.Text;         ...