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!");
}
}
} C# da mysl den tek veri çekme işlemi nasıl yapılır?
4
●164
- 11-09-2023, 19:15:53
- 15-09-2023, 16:16:50Provider olarak mysql kullanmak istiyor, mssql değil.. Bu konuyu takip edeceğim merak ediyorum.aspnetturkiye adlı üyeden alıntı: mesajı görüntüle
- 15-09-2023, 17:20:03kodlar,baglantılar parametlerler mssqlophisse adlı üyeden alıntı: mesajı görüntüle