Şimdi Ara

MSSQL if ile kayıt kontrol var mı?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
3.711
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Kolay gelsin arkadaşlar, C# uygulamaları üzerinde çalışıyorum.

    Şimdi Form1 açılınca k.adı , şifre giriş ekranı yaptım. Buralar normal fakat Kayıt Ol gibi bir buton koyarak ekstra bir form açacağım, bu form'a girdiğim bilgileri(k.adı ve şifre) leri tabloya kayıt edebilirim.

    Fakat k.adı ve şifre girerken, bunları tabloda varmı yok mu nasıl sorgulatılır hiçbir fikrim yok.

    Tablo adı: Musteriler
    Sütunlar: Kullanici, Sifre olsun mesela.

    Giriş yap dediğimde form1'de, ilk önce Musteriler tablosuna gidip, Kullanicilar'da girdiğimiz kullanici eşleşiyormu bunu kontrol edicek sanırım, sonrada o kullanıcı'nın sifre sütunundakiyle de mesela şifre bölümü textbox2.text olsun, karşılıyomu ?

    Mantık bu şekilde bile olsa, Select, Update, Insert Into, Delete, bunların hiçbiri karşılamıyo sanki benim istekleirmi.

    Yardımlarınızı bekliyorum. Teşekkürler.







  • Select kullanacaksınız.

    "Select * from Musteriler" Musteriler tablosundan bütün verileri çekersiniz.

    "Select Kullanici from Musteriler" Musteriler tablosundan Kullanıcı sütünundaki verileri çekersiniz

    "Select * from Musteriler where Kullanici=değer and Sifre=değer" Müşteriler tablosundan Kullanıcı ve şifre değerleri sağlayanı çekersiniz.

    Sanırım yeni başladınız biraz uğraşın uğraşmadan öğrenmek zor olur konuyu takip edeceğim sorununuz olursa tekrar yardımcı olmaya çalışacağım
  • quote:

    Orijinalden alıntı: ripbaby

    Select kullanacaksınız.

    "Select * from Musteriler" Musteriler tablosundan bütün verileri çekersiniz.

    "Select Kullanici from Musteriler" Musteriler tablosundan Kullanıcı sütünundaki verileri çekersiniz

    "Select * from Musteriler where Kullanici=değer and Sifre=değer" Müşteriler tablosundan Kullanıcı ve şifre değerleri sağlayanı çekersiniz.

    Sanırım yeni başladınız biraz uğraşın uğraşmadan öğrenmek zor olur konuyu takip edeceğim sorununuz olursa tekrar yardımcı olmaya çalışacağım

    Evet , 1-1.5 aylık bilgim mevcut şuan.

    Dediğiniz Gibi şöyle birşey yaptım ama doğru mu onu bilemedim, mantığını oturtamadım.

    Şimdi diyelimki

    komut.CommandText = "Select * From Musteriler Where Kullanici='"+txtKullaniciAdi.Text+"' and Sifre='"+txtSifre.Text+"'";
    ile çektik, if te bunu karşılaştırmasını neye göre yapacağım?

    Normalde globalde kullanıcı adı ve şifre belirlemiştim

    if(kullaniciadi == txtKullaniciAdi.Text && sifre == txtSifre.Text)

    diye yaptımda, hiç örneğini görmeyince kafam karışıyor :S

    if(txtKullaniciAdi.text == "Neye Eşitse?" && txtSifre.Text == "Neye eşitse?")

    burayı anlamadım :S

    Kodlar burada:
     
    SqlConnection baglanti = new SqlConnection(@"Data Source=BATUHAN-PC;Initial Catalog=data;Integrated Security=True");
    SqlCommand komut = new SqlCommand();
    private void btnLogin_Click(object sender, EventArgs e)
    {
    baglanti.Open();
    komut.Connection = baglanti;
    komut.CommandText = "Select * From Musteriler Where Kullanici='"+txtKullaniciAdi.Text+"' and Sifre='"+txtSifre.Text+"'";
    komut.ExecuteNonQuery();
    baglanti.Close();
    try
    {
    if (Sorgumuz doğru ise burada takılı kaldım :S)
    {
    MessageBox.Show("Giriş Yapıldı!");
    frm2.Show();
    this.Hide();
    }
    else
    {
    label3.Text = "Uyarı: Kullanıcı Adı Ve/Veya Şifre Yanlış!";
    }
    }
    catch
    {
    baglanti.Close();
    MessageBox.Show("Hata Mevcut");
    }

    }




    < Bu mesaj bu kişi tarafından değiştirildi batuhan15 -- 21 Aralık 2012; 22:10:31 >




  • Çekilecek verileri okumak için data reader oluşturmamışsın. Data reader oluşturmak için kullanacağın kod
    quote:

    SqlDataReader dr;



    quote:

    komut.ExecuteNonQuery();
    kodunu:

    quote:

    dr=komut.ExecuteReader();
    while (dr.Read())
    {
    MessageBox.Show(dr[0].ToString() + " " + dr[1].ToString());
    }


    bununla değiştir.

    Burda anlatmam gereken sorgunun çalıştırılması. ExecuteNonQuery geriye değer döndürmeyecek veritabanı işlemleri için kullanılır mesela kayıt ekleme düzenleme silme gibi fakat okuma yaparken ExecuteReader kullanman lazım.

    Sorguyu çalıştırdıktan sonra while ile değer okuma devam ettiği sürece çalışacak şekilde bir kod oluşturdum ve içinde nasıl çalıştığını anlaman için messagebox ile 1. sütun ile 2. sütundaki verileri gösteriyor. Gerisini biraz daha kurcalarsan yapabilirsin direk kod olarak yazmayayım bu senin için iyi olmaz öğrenmek için uğraşmak gerekir :)



    < Bu mesaj bu kişi tarafından değiştirildi ripbaby -- 22 Aralık 2012; 2:37:57 >




  • Süpersin, çok teşekkürler, oldu valla çok sevindim =)

    Büyük harfle başlıyan kullanıcıları görmüyordu bende kayıt yaparken ve okurken .tolower kullandım çözüm için.

    Yalnız mantık böyle mi;

    while (dr.Read())
    {
    if (txtKullaniciAdi.Text.Trim().ToLower() == dr[0].ToString() && txtSifre.Text.Trim().ToLower() == dr[1].ToString())
    {

    Burada bizim yazdığımız kullanıcıadını bulana kadar okuyor, eğer eşleşirse karşısındaki sütünde kullanıcı adının şifresini mi buluyor, yoksa başkasının şifresinde mesela 123456 olsa eşleştiği için giriş yapar mı?

    Text düzenleme:
    [ÇÖZDÜM!]Birde kodlar böyleyken, yanlış girersem label'de yazdığım kullanıcı adınız şifreniz yanlış text'i çıkmıyor ne alaka anlamadım :S

    Bunu while döngüsünden çıktığında koydum oldu, Breakpoint hayat kurtarıcı gerçekten. =)

    label3.Text = "Uyarı: Kullanıcı Adı Ve/Veya Şifre Yanlış!";


    Kod Kısmı:
     
    SqlConnection baglanti = new SqlConnection(@"Data Source=BATUHAN-PC;Initial Catalog=data;Integrated Security=True");
    SqlCommand komut = new SqlCommand();
    SqlDataReader dr;
    private void btnLogin_Click(object sender, EventArgs e)
    {
    try
    {
    baglanti.Open();
    komut.Connection = baglanti;
    komut.CommandText = "Select * From Musteriler Where Kullanici='" + txtKullaniciAdi.Text + "' and Sifre='" + txtSifre.Text + "'";
    dr = komut.ExecuteReader();
    while (dr.Read())
    {
    if (txtKullaniciAdi.Text.Trim().ToLower() == dr[0].ToString() && txtSifre.Text.Trim().ToLower() == dr[1].ToString())
    {
    MessageBox.Show("Giriş Yapıldı!");
    frm2.Show();
    this.Hide();
    }
    else
    {
    label3.Text = "Uyarı: Kullanıcı Adı Ve/Veya Şifre Yanlış!";
    }
    }
    baglanti.Close();
    }
    catch
    {

    MessageBox.Show("Başka Bir hata Var!");
    baglanti.Close();
    }



    < Bu mesaj bu kişi tarafından değiştirildi batuhan15 -- 22 Aralık 2012; 5:46:34 >




  • Data Reader satır satır okur yani kullanıcı adını okuyup şifreyi farklı yerden almaz.

    Ayrıca benden de bir öneri gelsin sana sorgunu yazarken parametre kullanırsan daha düzenli gözükür daha kolay olur.

    quote:

    komut.CommandText="Select * From Musteriler Where Kullanici=@kullanici and Sifre=@sifre";
    komut.Parameters.Add("@kullanici",txtKullaniciAdi.Text);
    komut.Parameters.Add("@sifre",txtSifre.Text);


    gibi

    komut.Parameters.Clear() kodu ile de parametrelerdeki değerleri temizlersin.
  • quote:

    Orijinalden alıntı: ripbaby

    Data Reader satır satır okur yani kullanıcı adını okuyup şifreyi farklı yerden almaz.

    Ayrıca benden de bir öneri gelsin sana sorgunu yazarken parametre kullanırsan daha düzenli gözükür daha kolay olur.

    quote:

    komut.CommandText="Select * From Musteriler Where Kullanici=@kullanici and Sifre=@sifre";
    komut.Parameters.Add("@kullanici",txtKullaniciAdi.Text);
    komut.Parameters.Add("@sifre",txtSifre.Text);


    gibi

    komut.Parameters.Clear() kodu ile de parametrelerdeki değerleri temizlersin.

    Evet böyle süper oldu, çok teşekkürler tekrar hocam.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: batuhan15

    quote:

    Orijinalden alıntı: ripbaby

    Data Reader satır satır okur yani kullanıcı adını okuyup şifreyi farklı yerden almaz.

    Ayrıca benden de bir öneri gelsin sana sorgunu yazarken parametre kullanırsan daha düzenli gözükür daha kolay olur.

    quote:

    komut.CommandText="Select * From Musteriler Where Kullanici=@kullanici and Sifre=@sifre";
    komut.Parameters.Add("@kullanici",txtKullaniciAdi.Text);
    komut.Parameters.Add("@sifre",txtSifre.Text);


    gibi

    komut.Parameters.Clear() kodu ile de parametrelerdeki değerleri temizlersin.

    Evet böyle süper oldu, çok teşekkürler tekrar hocam.

    ne demek çalışmaya devam :)




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.