• 11-09-2023, 19:15:53
    #1
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using MySql.Data;
    using MySql.Data.MySqlClient;
    using System.Security.Cryptography;
    using System.Drawing.Printing;
    using System.Xml.Linq;
    
    
    namespace WindowsFormsApp1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    
    public static MySqlConnection baglanti = new MySqlConnection("Server=localhost; Database=kafe; Uid=root; Pwd=;");
    
    public static void veritabani_baglantisi() // Veritabanı bağlantısını açmak için ayrı bir metot oluşturdum
    {
    try // Bağlantıda sorun oluşması durumunda hatanın ne olduğunu öğrenebilmek için try-catch kullandım
    {
    baglanti.Open();
    }
    catch (Exception err)
    {
    MessageBox.Show(err.Message); //Bağlantıyı açarken hata oluşursa, ayrıntılı bir şekilde bunu görebileyim
    }
    }
    
    public static string MD5Hash(string text)
    {
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    byte[] dizi = Encoding.UTF8.GetBytes(text);
    dizi = md5.ComputeHash(dizi);
    StringBuilder sb = new StringBuilder();
    foreach (byte ba in dizi)
    {
    sb.Append(ba.ToString("x2").ToLower());
    }
    return sb.ToString();
    }
    
    
    bool giris_dogrulama(string kAdi, string sifre) //Girişi doğrulamak için ayrı bir metot oluşturdum, geriye bool tipi değer döndürecek
    {
    veritabani_baglantisi(); //veritabani_baglantisi metotunu çağırarak veritabanına bağlantıyı açtım
    MySqlCommand cmd = new MySqlCommand(); //Veritabanına göndereceğim sorguyu tutabilmesi için nesne oluşturdum
    //NOT: MySqlCommand veritabanı üzerinde sorgulama, ekleme, güncelleme, silme işlemlerini yapmak için kullanılır
    cmd.CommandText = "SELECT * FROM uyeler WHERE kullanici_adi=@kAdi AND parola=@sifre"; //Nesnenin içine sorgumu yazdım
    cmd.Parameters.AddWithValue("@kAdi", kAdi); //textboxlara girilen değerleri, parametrelere aktardım
    cmd.Parameters.AddWithValue("@sifre", sifre); //Not: Parametre kullanarak injection'a karşı önlem alıyorum
    cmd.Connection = baglanti; //Komutu veritabanına yolladım
    MySqlDataReader login = cmd.ExecuteReader(); //MySqlDataReader'ı, yolladığım komuttan dönen değerleri satır satır okuması için kullandım
    if (login.Read()) //Read metodu geriye bool türünde değer döndürür
    {
    baglanti.Close();
    return true; //Okunacak satır var ise true değer döndürür
    }
    else
    {
    baglanti.Close();
    return false; // Okunacak değer yoksa da false değeri döndürür
    }
    }
    
    
    
    private void button1_Click(object sender, EventArgs e)
    {
    string kAdi = txtKullaniciAdi.Text; //textboxtaki değerleri string değişkenlere atadım
    string sifre1 = txtSifre.Text;
    string sifre = MD5Hash(sifre1);
    
    if (kAdi == "" || sifre == "") //Eğer textboxlardan biri boşsa beni uyarsın ve işlem yapmasın
    {
    MessageBox.Show("Lütfen tüm alanları doldurun");
    return;
    }
    bool a = giris_dogrulama(kAdi, sifre); //giris_dogrulama metotuna giriş bilgilerini yolladım ve bool tipinde bir değer elde ettim
    if (a) //Dönen değer true ise yani bilgiler veritabanındaki kayıtlarda mevcutsa if kod bloğu çalışsın
    {
    MessageBox.Show("Giriş Doğrulandı.");
    //Not: Bu if bloğuna giriş doğrulandığında gerçekleşmisini istediğiniz kodları yazabilirsiniz
    
    
    foreach (string printer in PrinterSettings.InstalledPrinters)
    {
    veritabani_baglantisi();
    
    
    
    
    string eklemeSorgusu = "INSERT INTO yazicilar (isletme_id, yazici_adi) VALUES (@veri1, @veri2)";
    
    using (MySqlCommand cmd = new MySqlCommand(eklemeSorgusu, baglanti))
    {
    // Parametreleri ayarlayın
    cmd.Parameters.AddWithValue("@veri1", "");
    cmd.Parameters.AddWithValue("@veri2", printer);
    
    
    // Sorguyu çalıştırın
    int etkilenenSatirSayisi = cmd.ExecuteNonQuery();
    
    if (etkilenenSatirSayisi > 0)
    {
    //MessageBox.Show("Veri başarıyla eklendi.");
    }
    else
    {
    //MessageBox.Show("Veri eklenirken bir hata oluştu.");
    }
    }
    
    }
    
    }
    else //Dönen değer true değilse yani false ise bu kod bloğu çalışsın
    MessageBox.Show("Hatalı Kullanıcı Adı veya Şifre!");
    
    
    
    
    
    
    }
    }
    }
  • 11-09-2023, 21:35:35
    #2
    mysql deil mssql
  • 15-09-2023, 16:16:50
    #3
    aspnetturkiye adlı üyeden alıntı: mesajı görüntüle
    mysql deil mssql
    Provider olarak mysql kullanmak istiyor, mssql değil.. Bu konuyu takip edeceğim merak ediyorum.
  • 15-09-2023, 17:20:03
    #4
    ophisse adlı üyeden alıntı: mesajı görüntüle
    Provider olarak mysql kullanmak istiyor, mssql değil.. Bu konuyu takip edeceğim merak ediyorum.
    kodlar,baglantılar parametlerler mssql