Girilen Kullanıcı adı ve şifreyi access veritabanında kontrol ederek, kullanıcı kayıtlı ise sisteme giriş yapan değilse uyarı veren projemizi aşağıdaki şekilde oluşturalım.
Öncelikle kullanıcı adı ve şifre kontrolünü yapacağımız formu aşağıdaki şekilde oluşturalım.
Daha sonra kullanıcı adı ve şifre doğruysa açılacak formu oluşturalım ve kaydedelim.
Veri tabanımızı Access te aşağıdaki şekilde oluşturalım.
Deneme amaçlı birkaç kayıt girelim.
Oluşturmuş olduğumuz Access dosyamızı projemizin kayıtlı olduğu yere Debug klasörü içine atalım. Bu örnekte veritabanımızın adı “giris.accdb” tablomuzun adı “kullanici” olarak ayarlandı.
Şimdi kodlarıyazmaya başlıyabiliriz. Projemize
1 2 3 | using System.Data.OleDb; |
eklemeyi unutmayalım.
Aşağıdaki kodları yazıp programımızı çalıştırdığımızda kontrolün yapılarak form2‘nin açıldığını yada uyarı mesajı verdiğini görüyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb; namespace kullanici_giris { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection con; OleDbCommand cmd; OleDbDataReader dr; private void button1_Click(object sender, EventArgs e) { string ad = textBox1.Text; string sifre = textBox2.Text; con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=giris.accdb"); cmd = new OleDbCommand(); con.Open(); cmd.Connection = con; cmd.CommandText = "SELECT * FROM kullanici where k_ad='" + textBox1.Text + "' AND k_sifre='" + textBox2.Text + "'"; dr = cmd.ExecuteReader(); if(dr.Read()) { Form2 f2= new Form2(); f2.Show(); } else { MessageBox.Show("Kullanıcı adı ya da şifre yanlış"); } con.Close(); } } } |
Dilersek textbox2 ye ait Passwordchar özelliğini ayarlayarak şifrenin gözükmemesini sağlayabilirsiniz.
Video:
Not: Class yapısı kullanarak Login Form Oluşturma yazısına gitmek için buraya tıklayın.
abi çözümünü denedim olmuyor yine o hatayı alıyorum ben
https://hizliresim.com/6z3O5R
ben bu hatayı aldım sebebini biliyorsanız yazarmısınız beni çok mutlu etmiş olursunuz
https://www.yazilimkodlama.com/c-2/microsoft-ace-oledb-12-0%E2%80%B2-saglayicisi-yerel-makine-kayitli-degil-hatasi-cozumu/
sen harikasın abi herzaman sorum olursa sana soracam ve sorduracam çok iyisin.
abi olmadı bende o var zaten kurulu tekrar indirdim hayla o hatayı alıyorum ne yapmam lazım benim
Bunun xml dosyası ile nasıl yaparım
Merhaba,
Size şöyle bir sorum olacak yardımcı olabilirseniz sevinirim ;
SP’den geriye ilgili duruma göre değer döndürmek ve bu değeri C# ile yakalamak istiyorum. Bu
değerlere göre sisteme giriş yapmaya çalışan kulanıcıya anlamlı mesajları vermek istiyorum. (Eğer
sistemde tanımlı bir kullanıcı sisteme giriş yapmaya çalışıyorsa ve şifreyi yanlış yazmışsa
SP’den -1 değerini dönsün ve Windows Forms Login ekranında “Kullanıcı adına ait
şifre doğrulanamadı!” mesajını verdirtmek . Eğer kullanıcı adı veya şifre yanlış girilmişse SP’den
geriye 0 değerini dönsün ve “Kullanıcı adını ve şifreyi kontrol ediniz!” mesajını
döndürsün. Eğer kullanıcı adı ve şifre doğru ise SP’den 1 değerini dönsün.
Yardımcı olursanız sevinirim, Şimdiden teşekkürler.
kullanıcı adı ve şifre girildikten sonra giriş yapma sayfası kapanması için ne yapmam gerek. frm2.show; dan sonra close(); yaptığımda program kapandığı için gerisi gelmiyor. yardımcı olurmusunuz
Yarın için küçük bir örnek paylaşırım.
Teşekkür ederim ben sorunumu çözdüm ama o sorunu yaşayan arkadaşlar için paylaşırsanız çok yardım olur
close(); yerine frm2.Hide(); kullan
Çok teşekkürler.
HOCAM SORUNU ÇÖZDÜMDE BEN PROGRAMI BAŞKASINA ATIYORUM AMA ONDA HATA VERİYOR NEDEN ?
Dosya yolu veya başka bir türden olmuş olabilir mi ?
Sonuçta Senin kaydettiğin yer farklı onun kaydettiği yer farklı
merhaba değerli çalışmalarınız için teşekkürler çok faydalandım.Fakat bu kullanıcı giriş ekranını windowstaki bir kullanıcı adı ve şifre ile yapmak istiyorum.bunu nasıl yapabilirim bilginiz varmı
Çok iyi sade güzel. Saol
Merhaba , c# form üzerinde bir form tasarımım var burada kullanıcı bilgileri diye bir tollstrip menü butonum var ve amacım girilen kişinin bilgilerine göre o menüyü doldurmak . Mesela a kişisi giriş yapıp menüye ulaşınca altında onun kullanıcı bilgileri gözükecek .
Çok güzel bir site tş bide e okul yapsan ödevimizde sana zahmet
Merhaba öncelikle çok güzel ve faydalı bir site olmuş.Benim yapmak istediğim Admin isimli bir kullanıcı ile girildiğinde diğer kullanıcılar için kullanıcı tanımlama ve yetkilendirme işlemleri yapmak.Bunu nasıl yapabilirim veritabanı kısmında?
Ahmet bey merhaba ben farklı bir konu hakkında bilgi almak istiyorum
diyelimki elimde iki adet form mevcut bunlardan 1. formun sil butonuna basdığımda 2.form açılıp sil şifresi isteyecek bu şifreyi girdikten sonra 1.formdaki silme işlemi aktifleşecek
yani formlar arası bir sil şifresi
ahmet abi email adresinize bakarsanız çok sevinirim
iyi akşamlar benim yapmak istediğim iki tane giriş personeli olsun. ama birisi her şeye erişebilirken diğeri sadece okuyabilsin istiyorum. yardım ederseniz sevinirim.
12 nisan tarihli yorumda benzer bir ornege ait link bulunuyor. İndirip inceleyebilirsiniz.
gayet iyi çalışıyor ama griş yaptıkdan sonra giriş yaptım form kapansa daha güzel olur bunun için ne eklemeliyim
f2.Show();
satırından sonra;
this.Hide();
diyerek şifre ekranını gizleyebilirsiniz. Form2 açılarak Giriş ekranı gizlenecektir. Fakat Form2 yi kapattığınızda arka planda bu giriş ekranı çalışmaya devam eder. Bunu için Form2_Closing olayına aşağıdaki kodları ekleyebilirsin.
private void Form4_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 f1 = new Form1();
f1.Show();
}
ahmet abi e-posta alabilir miyim ?
ahmet.cansever@yandex.com.tr veya facebook sayfasindan ulasabilirsin
merhaba kolay gelsin. bir sorum olacak yardım ederseniz sevinirim. c# windows formda günlük projesi yapıyorum. ilk formum kullanıcı girişi ve kullanıcı ekleme(veritabanı olarak sql server kullanmam gerekiyor)kullanıcılar tablosunda kullanıcı no otomatik artıyor. ikinci formda kullanıcıların datagridte kendi günlüklerini görmeleri icin ne yapmam gerekiyor
Merhaba. İlişkili iki tablo kullanmak gerekiyor. Kullanici girişi yapıldıktan sonra select where ifadesi kullanarak 2. tabloda sadece giris yapan kullanıcı id sine ait kayıtlari göstermek gerekiyor. Yarın firsat bulunca benzer bir ornek atabilirim siteye.
ilginiz için çok teşekkür ederim bekliyorum 🙂
unutmadan sunu da söyleyeyim. programı class kullanarak yapmam gerekiyor. Yapacağınız örnek uygulamada class da kullanabilirseniz sevinirim 🙂
Olur. Veritabaninda hangi alanlar olmasi gerekiyor. Biraz daha detayli aciklama yaparmisin.
mailinize gönderdim.
bu konuda acemiyim kardeş ben ziyeretçimin kullanıcı adı ve şifreyi girince benim belirlediğim sayfaya gitsin başka yeri görmesin istesem nasıl yaparım
Veri tabanında kullanıcı adı ve şifrelerin bulunduğu tabloda bir alan daha oluşturup kullanıcı tipine göre sayı verebilirsiniz. Atıyorum 1-Müdür 2-Muhasebe 3-Yönetici gibi. Daha sonra giriş yapıldığında kullanıcının yetkisine göre ilgili formu açtırabilirsiniz.
Çok teşekkür ederim Ahmet bey sonunda halloldu çok sağolun hiç aklıma gelmemişti sorunun böyle birşeyden kaynaklanabileceği 🙂
Rica ederim. Sorunun çözüldüğüne sevindim.
Kardeş hata yok diyorsun ama var. Burada verdiğin kodlar ile linkteki projedeki kodlar arasında fark var.
Linkteki projede:
cmd.CommandText = “Select * from kullanici where StrComp(k_ad,'” + textBox1.Text + “‘,0)=0 and StrComp(k_sifre,'” + textBox2.Text + “‘,0)=0”;
Sayfadaki kod bundan farklı?
Merhaba. Linkteki proje büyük küçük harf duyarlılığı göz önüne alınarak yapıldı.
Tüm kodlar aynı, form1 ve form2 dediğiniz gibi oluşturuldu. Access te veritabanı oluşturdum önce o hata çıkardı “Microsoft.ACE.OleDb.12.0′ sağlayıcısı yerel makine kayıtlı değil ” onu hallettim fakat start yaptığımda form1 i dolduruyorum ancak form2 ye geçmiyor? sorun nedir anlayamadım. Her şey aynı form1 kodları aynı, veritabanı aynı. İnceliyorum veritabanı bağlantısında mı hata var harf hatası falan ama o da yok. Sizin proje çalışıyor benim ki çalışmıyor lütfen yardım edin 2 gündür uğraşıyorum kafayı yedim
Kodlarınızı buraya eklerseniz yada projeyi sıkıştırıp mail atarsaniz bugun müsait bir zamanda inceleyebilirim.
Ahmet.cansever@yandex.com.tr adresine mail olarak gönderdim. @mynet uzantılı “Proje Sorunu” konulu mail. Müsait vaktinizde incelerseniz çok sevinirim çok mutlu olurum
Merhaba. Sorununuzla ilgilendim. Mail göndermeye çalıştım fakat mümkün olmadı.Form1′ de butonu silme sonra tekrar ekleme gibi bir nedenden dolayı olduğunu düşündüğüm bir sorun oluşmuş. Şunları denermisiniz.
1-) Form1 Form tasarımı görünümündeyken Giriş butonuna çift tıklayın. Giriş butonu için Click_1 olayı açılacak ve kodların olmadığını göreceksiniz.
2-) Daha önceden Button1 Click olayına yazmış olduğunuz kodları seçerek kes – yapıştır yapın.
Bu işlemleri yapıp çalıştırdığımda projeniz çalıştı. Kolay gelsin.
start dediğimde direk form 2 ye geçiyor ilk önce giriş yapıp ben gitmesini istiyorum nasıl düzeltcegiz
Merhaba. Örneği tekrar inceleyin. Söylediğiniz gibi bir sorun olmaması gerekiyor. Yazının sonunda örneğe ait link bulunuyor. Linkten indirerek tekrar inceleyebilirsiniz. Kolay gelsin.
sadece ben kodları aldım ve kendi oluşturdum projenin kullanıcı girişi formu5 ve ben bunun form 1 gitmesini istiyorum lakin direk form 1 gidiyor ilk önce form5 açmıyor
Yazdığınız kodları incelemem gerekiyor.
projeyi rar yapıp atıyımmi
Olur. Atarsaniz ilgilenebilirim.
Aklıma takılan bir soru var ;
Debug klasörüne database dosyamızı attık ileride setup yaparken sorun oluşturur mu ? proje bittikten sonra.
Projenin içine attığımız icin sorun olmayacaktır.
con Open da hata veriyor
Bağlantı cümlenizi kontrol edin.
Kontrol Ettim ve düzeldi Teşekkür ederim 🙂
Merhaba, ben bu kodları kendi projeme uyarladım. Veri tabanımda hasta ve doktor tablolarım bulunuyor. Sizin kodlarınızı hasta girişi için uyguladım fakat aynı ekranda doktorda giriş yapabilmeli. İki tablonun kontrolünü nasıl yapabilirim? Bunun için yardımcı olabilir misiniz?
Veritabanında kullanıcı tablosuna bir alan daha ekleyip ör: hasta için:1 doktor için:2 kaydedebilirsiniz.
Aynı şekilde Form kısmında da radiobutton koyarak Hasta ya da Doktor olarak seçim yaptırabilirsiniz. Sql sorgusunda da bu alanı da dahil ederek çözebilirsiniz. Benzer bir uygulama var. Aşağıdaki linkten indirip inceleyebilirsiniz.
https://yadi.sk/d/SKmBKOiFqBuNn
Öncelikle cevabınız için teşekkür ederim. Ben veri tabanımda kullanıcı tablosu oluşturmamıştım. Hastanın bilgileri ve şifresi hasta tablosunda, doktorun bilgileri ise doktor tablosunda. Yani ikisini ortak bir alanda kontrol etmek istiyorum fakat bilgileri farklı tablolardan çekmek istiyorum. İki farklı sorgu çalıştırınca hata aldım. Kullanıcı tablosu eklemeden halledebilir miyim bu durumu?
Normalde ayırmak kolaylık sağlayacaktır.Ayrı tablo olmayacak ise Form üzerinde bir radio button ekleyerek seçim yapmasını ve ona göre ilgili tabloya yönlenmesini sağlayabilirsiniz.
Evet, radio button kullanınca istediğim şekilde çalıştı. Teşekkür ederim yardımlarınız için, iyi günler.
Merhabalar , bende if sorgusu çalışmıyor tüm kodları aynı şekil yazdım hiçbir hata vermiyor fakat çalıştırınca ne yazarsak yazalım else kısmı çalışıyor. Yardımcı olursanız çok sevinirim teşekkürler..
Merhaba projeyi indirip deneyebilirsiniz.
ilgilendiğiniz için teşekkür ederim fakat indirip denedim olmadı sizin kodlarınız çalışıyor ama benimki çalışmıyor. Kopyalayıp komple kodları aldım ama yine aynı oldu else kısmı çalışıyor if e girmiyor .
Sorgu cümlesinde yada bağlantı cümlesinde bir hata olabilir. Projeyi yollarsaniz ilgilenebilirim.
Sorun çözüldü.
Merhaba reader de hata verior bi kodlara bakar mısınız??
Kodlar çalışıyor. İndirip kontrol edersiniz.
kardeş çalışmıyor kodlarda hata var sanırım
Çalışıyor. Aldığınız hata mesajını yazarsanız yardımcı olabilirim.
şifre için büyük küçük harf duyarlılığını nasıl kontrol edebiliriz?
cmd.CommandText = “Select * from kullanici where StrComp(k_ad,'” + textBox1.Text + “‘,0)=0 and StrComp(k_sifre,'” + textBox2.Text + “‘,0)=0”;
şeklinde yapabilirsiniz.
Şifre değiştirme yapabilir misiniz
Update kullanabilirsiniz.
UPDATE kullanici
SET k_sifre=’123456789′
WHERE k_ad=’ahmet’ gibi.Burada değerleri textboxlardan alabilirsiniz.
Bu konuyu inceleyebilirsiniz.
http://www.yazilimkodlama.com/programlama/c-access-veri-tabani-baglantisi-select-insert-update-delete-ornek-uygulama/
dr = cmd.ExecuteReader(); hatası veriyor bende ya
Veri tabanındaki alanları ve sorgu cümlenizi kontrol edin.
dr varya data reader onu kapatmamışsın o nerde kapancak ifin içindemi yoksa en dışar damı saygılar
Kodlarda herhangi bir sorun yok. dr.read() if icerisinde. Dilerseniz yazının sonundaki indirme linkinden projeyi indirebilirsiniz.
başarılı çalışma ama bende çalışmadı size ulaşabilirmiyim mail yoluyle?
Ahmet.cansever@yandex.com.tr ile ulaşabilirsiniz. Nerede hata aldiginizi soylerseniz yardımcı olabilirim