Hayırlı akşamlar,
Bu konuyu açmamda ki en büyük etken, yeni başlayanların çoğunun veritabanı giriş ekranı yapma isteğidir(Nedenini bende keşfedebilmiş değilim 😀 . İsterseniz bu yazımda bir kullanıcı girişi nasıl yapılır onu anlatayım, hem soranlara direkt link ile yardımcı olabilir, olabilirim 😁
ℹ️ SENARYO: ACCESS VERİTABANI İLE KULLANICI ADI VEYA TELEFON İLE ŞİFRE EŞLİĞİNDE GİRİŞ SAĞLANMASI.
1) Veritabanı Oluşturma
Öncellikle Access veritabanızı oluşturup, gerekli kolonları oluşturuyoruz.
https://i.hizliresim.com/XEk6Jo.png
Veritabanımızı oluşturduktan sonra ise tablomuzu oluşturuyoruz;
https://i.hizliresim.com/Ey8Dp9.png
Bu şekilde oluşturduğumuz tablomuzu kaydediyoruz. Hemen sonrasında Delphi ile projemizi açıp veritabanımızın yanına projemizi kaydedip, bir sefere mahsus derliyoruz.(Data.mdb dosyasını uygulamanın yanına koymak için.)
Bu işlemleri halletikten sonra bu şekilde bir win32>Debug klasörünüzün olması gerekir;
https://i.hizliresim.com/2E1a8v.png
Bu şekilde ise sorun yok! Şimdi forum tasarımımızı halledelim;
https://i.hizliresim.com/9DoN2Q.png
Bu şekilde forum tasarımını yaptık(Buna bağlı kalmanıza gerek yok 🙁 ). Şimdi ise gerekli bileşenleri sürükleyelim;
https://i.hizliresim.com/WGkD1L.png
Şimdi isterseniz biraz bileşenlerimizden bahsedelim;
Baglanti(UniConnection): Veritabanı ile bağlantı sağlamanızı sağlar.
Sorgu(UniQuery): Veritabanı içinde sorgu yapmanızı sağlar.
Provider(AccessUniProvider): UniConnection çalışabilmesi için driver görevi görür.
Bu işlemleri hallettikten sonra artık kodlama merasimine geçebiliriz;
⚠️ Formun OnCreate olayına;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
with Baglanti do
begin
ProviderName := 'Access'; //Veritabanı türünü belirler.
Database := 'Data.mdb'; //Uygulamanın bulunduğu yolu işaret eder.
// Password := **** --> Şifre olduğunda bu parametre kullanır.
Connected := True; //Bağlantıyı açtıran komut.
with Sorgu do
begin
Connection := Baglanti; //Baglanti connection bileşenimizi query bileşenine tanıtıyoruz.
end;
MessageBox(handle, 'Veritabanı ile bağlantı başarıyla sağlandı!', 'Başarılı!', MB_OK + MB_ICONINFORMATION);
end;
except
MessageBox(handle, 'Veritabanı bağlantı hatası!', 'Hata!', MB_OK + MB_ICONERROR);
Application.Terminate; ///Program kapatma komutu.
end;
end;
⚠️ Yorum satırlarıyla kodları açıklamaya çalıştım biraz.
Bu kodlar, program açılışında(Create edilirken) bize veritabanı bağlantısını sağlayacaktır;
https://i.hizliresim.com/QpB2M3.png
Gibi...
⚠️ Forma eklediğimiz Buttonun OnClick olayına;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Sorgu do
begin
Close; //Sorgu kapatılıyor.
SQL.Clear; //Ne olur ne olmaz SQL tahtamız siliniyor.
SQL.Text := 'select * from KullaniciGiris where (KAdi=:Kadi or KTelefon=:KTelefon) and KSifre=:KSifre'; //SQL sorgumuzu ekliyoruz.
ParamByName('KAdi').Value := Edit1.Text; //Parametlereler tanımlanıyor..
ParamByName('KTelefon').Value := Edit1.Text; //Parametlereler tanımlanıyor..
ParamByName('KSifre').Value := Edit2.Text; //Parametlereler tanımlanıyor..
Open; //Sorgu açılıyor.
end;
if Sorgu.RecordCount > 0 then /// Kayıt sayısı eğer 0'dan büyük ise kullanıcı var ve giriş izni verilir.
begin
MessageBox(handle, 'Giriş başarıyla gerçekleşti, tebrikler!', 'Tebrikler!', MB_OK + MB_ICONINFORMATION);
end
else
begin
if Sorgu.RecordCount <= 0 then /// Kayıt sayısı 0 veya 0'dan küçük bir sayı ise kullanıcı yok ve izin verilmez.
begin
MessageBox(handle, 'Kullanici Adi veya Şifre Yanlış!', 'Bi Yanlışlık Var!', MB_OK + MB_ICONWARNING);
end;
end;
end;
⚠️ Bunlar ise bizim kullanıcımızın olup olmadığını sorgulayan kodlar.
Sonuçlar;
https://i.hizliresim.com/zJ5MaY.png
(Sadece kullanıcı adı ile giriş)
https://i.hizliresim.com/GyRDP2.png
(Telefon numarası ile giriş)
(Şifre yanlış olduğunda.)
NOT: KAdi('DelphiCan'), KTelefon('666666'), KSifre('123456') olarak kaydedilmiştir.
Proje GitHub linki:
https://github.com/halilhanbadem/AccessKullaniciGirisi
Kaynak
Saygılarımla,
İyi çalışmalar.