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

FOREGIN KEY ve INNER JOIN ile ilişkili tablo oluşturma Örneği

--1)DataBase oluşturma Sorgusu --CREATE DATABASE Join_Alistirma; --GO --USE Join_Alistirma; --GO --2)musteri Tablosu oluşturma --CREATE TABLE musteri ( --    musteri_ID INT IDENTITY(1,1) PRIMARY KEY, --    adi_soyadi NVARCHAR(100) NOT NULL, --    telefon NVARCHAR(20) NOT NULL --); ---3)araclar Tablosunu Oluştur (FOREIGN KEY ile) --CREATE TABLE araclar ( --    id INT IDENTITY(1,1) PRIMARY KEY, --    musteri_ID INT NOT NULL, --    plaka NVARCHAR(20) NOT NULL, --    marka NVARCHAR(50), --    model NVARCHAR(50), --    yil INT, --    FOREIGN KEY (musteri_ID) REFERENCES musteri(musteri_ID) --); ----------------------------------------------------------------------------- ----NOT  --musteri_ID → musteri tablosuyla bağlantılı olacak. --plaka, marka, model, yil alanları araç bilgilerini tutacak. ----------------------------------------------------------------------------- ---4)Tablolara muste...

Private Void Metod

 namespace Metotlar {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         //Parametre Almayan Değer Döndürmeyen Metot         //Değer döndürmeyen metot tanımlarken Başa Void yazılır         //Tekrar tekrar aynı kod parçasını yazmaya gerek kalmaz Metot adını istediğinde çağarabilirsin         //void : private void olan metot başka yerden erişelemez         //public void olanlar ise erişime açık (dışarıdan görülebilen) anlamına gelir         //Örnek : MesayYaz Metotu: Çağrıldığı yerde ekrana bir mesaj veren metot yazalım         void MesajYaz()          {             MessageBox.Show("Merhaba Ben Parametresiz...

İD ye göre işlemler C# ve Class örnekleri ile Birlikte

***************************************************************************** ✅ DbHelper.cs adında bir sınıf ile Insert , Update , Delete , GetId , SelectAll işlemlerini kolayca yapabilirsiniz. ✅ SCOPE_IDENTITY() kullanarak son eklenen kaydın ID’sini çekme örneği var. ✅ Bu ID’yi Label veya TextBox ’a yazdırabilir, Update veya Delete için tekrar kullanabilirsiniz. ✅ DataGridView ile tüm verileri listeleme örneği de dahil. *****************************************************************************  // ✅ DbHelper.cs using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; public static class DbHelper {     private static string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=YourDatabase;Integrated Security=True";     public static object InsertAndGetId(string query, Dictionary<string, string> parameters)     {         using (SqlConnection connection = new SqlConne...