Kullanıcı Adı Kontrolü


Merhabalar,

Bugünkü yazımızın konusu başlıkta da belirtildiği üzere kullanıcı adının kontrolü olacaktır.
Yazdığımız programları kullanan insanlar ve bu insanların programımızda hesapları vardır. Söz konusu hesapların karışmaması adına kullanıcı kayıt işlemi yaparken belli noktalarda kontroller gerçekleştirmemiz gerekir. Örneğin kullanıcı bilgilerini girip kaydet butonuna bastığında kullanıcı ad ve e-mail adresinin veritabanımızda olup olmadığının kontrolu yapılmalı ve ancak girilen bilgilerin daha önceden başka bir kullanıcı tarafından alınmamış olması durumunda yeni kayıt işlemi gerçekleştirilmelidir.

Bu yazıda da kendimize sormamız gereken soru, C#’ta e-mail veya kullanıcı adı kontrolünü nasıl gerçekleştiririm olacaktır.

Bununla ilgili olarak önce veritabanımızı oluşturalım;
Ben Forum isimli bir database oluşturduktan sonra bu database içine Uyeler isimli tek bir tablo ekledim. Bu tabloyu aşağıda görebilirsiniz;


Veritabanımızı oluşturduktan sonra bir sonraki aşama arayüzün oluşturulmasıdır. Formunuzu aşağıdaki gibi basit bir şekilde tasarlayabilirsiniz.



Sıra geldi metotlarımızı yazmaya;

NOT: Burada yazacağımız metodun geri dönüş türü Boolean olacaktır. Aslında sebebi programı yazarken kendimize sorduğumuz soruda saklıdır. Veritabanında böyle bir “user name” var mı, böyle bir mail adresi var mı?  sorusunun cevabı tabiki var ya da yok olacaktır. Boolean türünün de iki değer aldığını (true, false) düşünürsek bu veri tipinin kullanılması işlerimizi kolaylaştıracaktır.

Metoda geçmeden önce, aşağıda 4 tane metot yer almaktadır. Bu 4 metot da aynı işi yapmaktadır. İlk metot ADO.NET’ten vazgeçemeyenler, ikincisi Linq ve üçüncüsü de Lambda expression kullanıcıları içindir. Dördüncü metot ise tek satır kod ile işlerimizi halledebilmek için verilen bir metot örneğidir.

    public bool KullaniciAdKontrol_1(string kullaniciAd)
    {
        //# Girilen kullanıcı adının veritabanında olup olmadığını Boolean değişken ile kontrol edeceğiz. sonuc değişkenimiz false ise girilen kullanıcı adı veritabanımızda yok demektir.
        bool sonuc = false;

        //# Klasik bağlantı işlemlerimiz..
        SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Forum;Integrated Security=True");

        //# StringBuilder yardımı ile Sql tümcemizi yazacağız. Dikkat! Sql Inception'lardan korunabilmek için her daim + ile string birleştirmelerden kaçının!
        StringBuilder builder = new StringBuilder();

        SqlCommand cmd = new SqlCommand(builder.AppendFormat("SELECT COUNT(ID) FROM Uyeler WHERE KullaniciAd = '{0}'", kullaniciAd).ToString(), con);

        //# Bağlantının durumu "kapalı"dan farklı ise bağlantıyı aç!
        if (cmd.Connection.State != ConnectionState.Open) cmd.Connection.Open();

        //# Sorgumuz sonucunda tek bir değer(int) dönecektir. Söz konusu değer girilen kullanıcı adına eşit olan kayıt sayısını verecektir. Bu sayının 0'dan büyük olması sonuc değişkeninin true değerini aksi durumda false değerini almasını sağlayacaktır.
        sonuc = Convert.ToInt32(cmd.ExecuteScalar()) > 0 ? true : false;

        con.Close();

        return sonuc;
    }

Linq teknolojisi ile bunu nasıl yaparız?

    public bool KullaniciAdKontrol_2(string kullaniciAd)
    {
        var sorgu = (from u in entity.Uyelers
                     where u.KullaniciAd == kullaniciAd
                     select u).Count();

        if (sorgu > 0)
            return true;
        else
            return false;
    }

Lambda expression kullanarak sorgumuzu biraz daha kısaltabiliriz. Nasıl mı! İşte cevabı;

    public bool KullaniciAdKontrol_3(string kullaniciAd)
    {
        var query = entity.Uyelers.Where(u => u.KullaniciAd == kullaniciAd).Count();

        if (query > 0)
            return true;
        else
            return false;
    }

Peki son yazmış olduğumuz metodun daha kısa bir hali var mıdır? Tabi ki vardır. Lambda expression yardımı ile metodumuzu tek satırda ifade etmek çok basit;

    public bool KullaniciAdKontrol_4(string kullaniciAd)
    {
        return entity.Uyelers.Where(u => u.KullaniciAd == kullaniciAd).Count() > 0 ? true : false;
    }

Bir sonraki yazımızda görüşmek dileğiyle, hoşçakalın..

0 yorum:

Yorum Gönder