C# ile Windows Formununa Login Girişi!

Yaptığımız uygulamaların çalışması için önceden bir ‘Kullanıcı Adı’ ve ‘Şifre’ sorarak çalışmasını isteyebiliriz. Bunun için bir çok algoritma geliştirilebilir. Bu makalede benim izleyeceğim yol, ‘Kullanıcı Adı’ ve ‘Şifre’ bilgilerini bir veritabanında tutmak olacak, hatta kullanıcının ‘Yetki’lerini de veritabanında tutarak uygulamamızda kullanıcıya özel yetkiler verebiliriz. Aşağıdaki resimde kullanıcı ve yetki bilgilerinin veritabanı tasarımı SQL Server 2005’de yapılmış olarak gösterilmektedir.

Tasarımı incelersek; ‘Yetki’ tablosu bizim uygulamamıza özel yetkileri içeriyor. Mesela bir ürün takip otomasyon’u yapıyorsak, ‘Stok Gir’, ‘Stok Çık’ bunlar yetki olabilir ve depo bölümünü ilgilendiren yetkilerdir, aynı şekilde ‘Cihaz Üretime Hazırla’ gibi bir yetki’de üretim bölümünü ilgilendiren bir yetkidir. Uygulamamızda birde ‘Admin’ yetkisi olur bu yetki de yeni kullanıcı ekleyebilir, yetkileri değiştirebilir. Bunu yapması için de Yetkilerin adlarını da tutmamız Admin için daha anlaşılır yapar. ‘Kullanicilar’ tablosuda ‘KullaniciNo’, ‘KullaniciSifre’ ve ‘KullaniciAdi’ tutar bu tablo da ‘Kullanıcı Adı’ ve ‘Şifre’ bilgileri tutulur. ‘Kullanıcı No’ tek bir ‘Kullanıcı Adı’ ve ‘Şifre’ olacağı için primary key olarak tanımlanmışdır. Son olarak ‘Izin’ tablosu da ‘Kullanıcı No’, ‘Yetki No’ ve ‘ErisebilirMi’ sütunlarından oluşuyor. Bu tabloyu incelersek, Kullanıcı No’yu primary key yapamayız çünkü bir kullanıcının birden fazla yetki’si olabilir, yetki’yide primary key yapamayız çünkü bir yetki birden fazla kullanıcı için kullanılabilir, ‘ErisebilirMi’ sütunuda zaten primary key olması söz konusu değil, bu tablo KullanıcıNo ve Yetki tablosunun birbirine bağlayan bir tablodur. Veritabanı kısmı tasarımımız bittikden sonra şimdi uygulamamızı tasarlayalım.

‘Kullanıcı Adı’ ve ‘Şifre’ soran basit bir form tasarımı hazırladık. Tüm menüler deaktif, kullanıcı şifre girmeye başladığı zaman ‘Tamam’ butonuda aktif olacak şekilde hazırladık. Şimdi veritabanına birkaç kullanıcı, yetki ve izin ekleyelim.

Yukarıda bazı yetki’ler, kullanıcılar ve izin’ler belirledik, kullanıcıya göre yetki verdik. Şimdi farklı kullanıcılarla giriş yapalım ve bakalım uygulamamızda doğru yerler aktif oluyor mu. Murat kullanıcısının sadece ‘Stok Gir’ ve ‘Stok Çık’ yetkisi verdik, Burak kullanıcısına bu yetkileri vermedik, sadece ‘Admin’ ve ‘Ürün Hazırlama’ yetkisi verdik.

Formumuzdan ‘Murat Özkan’ kullanıcı adı ile giriş yapıldığında;

‘Burak Özkan’ kullanıcı adı ile giriş yaptığında;

Farklı kullanıcı girişlerinde farklı yerler aktif oldu, peki bunu nasıl yaptık? İşin kod kısmını biraz inceleyelim. Önce ‘Tamam’ butonunun ‘Click’ eventinde olanları yazalım;

private void button1_Click(object sender, EventArgs e)
{
   if (kullaniciAdi_tb.Text == "")
   {
      MessageBox.Show("Lütfen Kullanıcı Seçiniz.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   } 

   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
   cnn.Open();
   DataSet ds = new DataSet();
   SqlDataAdapter sda = new SqlDataAdapter("select * from Kullanicilar where KullaniciAdi = '" + kullaniciAdi_tb.Text + "'", cnn);
   sda.Fill(ds); 

   if (ds.Tables.Count == 0)
   {
      MessageBox.Show("Geçersiz Kullanıcı.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   }

   KullaniciAdi = ds.Tables[0].Rows[0][2].ToString();
   KullaniciNo = (int)ds.Tables[0].Rows[0][0];
   string sifre = ds.Tables[0].Rows[0][1].ToString();
   KullaniciSifre = sifre;

   if (sifre == sifre_tb.Text)
   {
      MessageBox.Show("Hoşgeldiniz ", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Information);
   }
   else
   {
      MessageBox.Show("Geçersiz Şifre", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   }

   if (YetkileriniYukle() != true) { return; }

   stokCik_tsmi.Enabled = YetkiDizisi[3];
   stokGir_tsmi.Enabled = YetkiDizisi[2];
   urunHazirla_tsmi.Enabled = YetkiDizisi[5];
   yetkilendirmeAyarlari_tsmi.Enabled = YetkiDizisi[0];
   kullaniciEkle_tsmi.Enabled = YetkiDizisi[0];

   menuStrip1.Enabled = true;
}

Kod’u incelediğimizde veritabanı’nın ‘Kullanıcı’ tablosundan ‘Kullanıcı Adı’na göre şifresini alıyoruz ve girilen şifreyle karşılaştırıyoruz. Eğer şifre doğruysa yetkilerini yüklüyoruz aksi durumda hata verip hiçbir menüyü aktif etmeden fonksiyonu bitiriyoruz. Şimdi ‘YetkileriniYukle()’ fonksiyonunu inceleyelim;

private bool YetkileriniYukle()
{
   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString; cnn.Open();

   DataSet ds = new DataSet();
   SqlDataAdapter sda = new SqlDataAdapter("select YetkiNo, ErisebilirMi from Izin where KullaniciNo = '" + KullaniciNo + "'", cnn);
   sda.Fill(ds);

   if ((ds.Tables.Count == 0))
   {
      MessageBox.Show("Yetkiler Yüklenemiyor.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return false;
   }

   for (int i = 0; i < ds.Tables[0].Rows.Count; ++i)
   {
      int yetkiIndis = (int)ds.Tables[0].Rows[i][0];
      YetkiDizisi[yetkiIndis] = (bool)ds.Tables[0].Rows[i][1];
   }
   return true;
}

Bu fonksiyonda da KullaniciNo’ya göre Izin tablosundan yetkileri aldık, bir tane global YetkiDizi’miz var, veritabanından verdiğimiz yetkilere göre YetkiDizi’si dolduruluyor, yetkiIndis’de sıralı olmayacağı için Izın tablosundanki YetkiNo’ya göre dolduruluyor böylece programda ki indis’le veritabanında ki YetkiNo aynı olmuş oluyor. Son olarakda kullanıcı ekleme, silme, şifre değiştirme ve kullanıcının yetkilerini belirleme kısmını yapalım;

Yukarıdaki şekilde form’larımızı tasarladık, bu işlemleri yapmak için ‘Stored Procedure’ kullanacağız. Ilk olarak Kullanıcı Sil formunu inceleyelim;

Form’un Load kısmı ve button1_Click event’i şöyle;

private void KullaniciSil_Load(object sender, EventArgs e)
{
   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;cnn.Open();

   DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter("select * from Kullanicilar", cnn);
   sda.Fill(ds);

   if (ds.Tables.Count == 0)
   {
      MessageBox.Show("Kullanıcılar Yüklenemiyor.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   }

   for (int i = 0; i < ds.Tables[0].Rows.Count; ++i)
   { listBox1.Items.Add(ds.Tables[0].Rows[i][2].ToString()); }
}

private void button1_Click(object sender, EventArgs e)
{
   if (MessageBox.Show("Kullanıcı Kaydı Silinme İşlemini Onaylıyormusunuz?", "Otomasyon", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) != DialogResult.Yes)
   {
      MessageBox.Show("Silme İşlemi İptal Edildi", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Information);
      return;
   }

   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;cnn.Open();
   SqlCommand cmd = new SqlCommand();

   cmd.Connection = cnn;
   cmd.CommandText = "[up_KullaniciSil]";
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.AddWithValue("@KullaniciNo", listBox1.SelectedIndex + 1);
   try
   {
      cmd.ExecuteNonQuery();
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
      return;
   }
   MessageBox.Show("Kullanıcı Başarıyla Silindi", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Information);
   this.Close();
}

Form ilk açıldığında Kullanıcılar veritabanından yükleniyor, ‘Kullanıcı Sil’ butonunda SQL Serverda hazırladığımız ‘@KullanıcıNo’ parametresi alan stored procedure çağırıyoruz;

Stored Procedure;

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[up_KullaniciSil]@KullaniciNo intasbeginbegin tran

begin try delete from Izin where KullaniciNo = @KullaniciNo end try begin catch rollback tran return end catch

begin try delete from Kullanicilar where KullaniciNo = @KullaniciNo end try begin catch rollback tran return end catch

commit tran end

Yetkilendirme ayarları formunu belirlediğimiz yetkilerin isimlerine sahip olan checkBox ekliyoruz. FormLoad kısmında yine kullanıcıları yüklüyoruz, seçilen kullanıcıların yetkileri seçilmiş oluyor. FormLoad ve ‘UYGULA’ butonun kod kısmı aşağıdaki gibi;

private static CheckBox[] cbDizi = new CheckBox[7];
public string KullaniciAdi;
public int KullaniciNo;
private DataSet dsKullanicilar;

private void YetkilendirmeAyarlari_Load(object sender, EventArgs e)
{
   cbDizi[0] = Yetki0;
   cbDizi[1] = Yetki1;
   cbDizi[2] = Yetki2;
   cbDizi[3] = Yetki3;
   cbDizi[4] = Yetki5;
   cbDizi[5] = Yetki6;
   cbDizi[6] = Yetki13;

   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
   cnn.Open();

   dsKullanicilar = new DataSet();
   SqlDataAdapter sda = new SqlDataAdapter("select * from Kullanicilar", cnn);
   sda.Fill(dsKullanicilar);

   if (dsKullanicilar.Tables.Count == 0)
   {
      MessageBox.Show("Kullanıcılar Yüklenemiyor.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   } 

   for (int i = 0; i < dsKullanicilar.Tables[0].Rows.Count; ++i)
   { comboBox1.Items.Add(dsKullanicilar.Tables[0].Rows[i][2].ToString()); }
}

private void button1_Click(object sender, EventArgs e)
{
   if (MessageBox.Show("Yetkileri Değiştirmek İstediğinize Eminmisiniz?", "Otomasyon", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) != DialogResult.Yes)
   { return; }

   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
   cnn.Open();
   SqlCommand cmd = new SqlCommand();

   cmd.Connection = cnn;
   cmd.CommandText = "up_KullaniciYetkiDegistir";
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.AddWithValue("@KullaniciNo", KullaniciNo);
   cmd.Parameters.AddWithValue("@Yetki0",  Yetki0.Checked);
   cmd.Parameters.AddWithValue("@Yetki1",  Yetki1.Checked);
   cmd.Parameters.AddWithValue("@Yetki2",  Yetki2.Checked);
   cmd.Parameters.AddWithValue("@Yetki3",  Yetki3.Checked);
   cmd.Parameters.AddWithValue("@Yetki5",  Yetki5.Checked);
   cmd.Parameters.AddWithValue("@Yetki6",  Yetki6.Checked);
   cmd.Parameters.AddWithValue("@Yetki13", Yetki13.Checked);

   try
   {
      cmd.ExecuteNonQuery();
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
      return;
   }
   MessageBox.Show("Yetkiler Başarıyla Değiştirildi.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
   cnn.Open();

   for (int i = 0; i < dsKullanicilar.Tables[0].Rows.Count; ++i)
   {
      if ((string)dsKullanicilar.Tables[0].Rows[i][2] == comboBox1.Text)
      { KullaniciNo = (int)dsKullanicilar.Tables[0].Rows[i][0]; }
   }

   DataSet ds = new DataSet();
   SqlDataAdapter sda = new SqlDataAdapter("select YetkiNo, ErisebilirMi from Izin where KullaniciNo = '" + KullaniciNo + "'", cnn);
   sda.Fill(ds);

   if ((ds.Tables.Count == 0))
   {
      MessageBox.Show("Yetkiler Yüklenemiyor.", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   }

   for (int i = 0; i < ds.Tables[0].Rows.Count; ++i)
   {
      int yetkiIndis = (int)ds.Tables[0].Rows[i][0];
      cbDizi[yetkiIndis].Checked = (bool)ds.Tables[0].Rows[i][1];
   }
}

Her kullanıcı için cbDizi setleniyor. cbDizi, chechBox’lardan oluşan bir dizi ve veritabanımızdaki YetkiNo ile aynı indis’e sahip.

Stored Procedure;

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[up_KullaniciYetkiDegistir]
@KullaniciNo int,
@Yetki0 int,
@Yetki1 int,
@Yetki2 int,
@Yetki3 int,
@Yetki4 int,
@Yetki5 int,
@Yetki6 int,

as begin 

update Izin set ErisebilirMi = @Yetki0 where KullaniciNo = @KullaniciNo and YetkiNo = 0
update Izin set ErisebilirMi = @Yetki1 where KullaniciNo = @KullaniciNo and YetkiNo = 1
update Izin set ErisebilirMi = @Yetki2 where KullaniciNo = @KullaniciNo and YetkiNo = 2
update Izin set ErisebilirMi = @Yetki3 where KullaniciNo = @KullaniciNo and YetkiNo = 3
update Izin set ErisebilirMi = @Yetki4 where KullaniciNo = @KullaniciNo and YetkiNo = 4
update Izin set ErisebilirMi = @Yetki5 where KullaniciNo = @KullaniciNo and YetkiNo = 5
update Izin set ErisebilirMi = @Yetki6 where KullaniciNo = @KullaniciNo and YetkiNo = 6 
end

Kullanıcı şifresini değiştirmek isteyebilir, bunun için ana form’dan giriş yaptıkdan sonra aşağıdaki işlemle kendi şifresini değiştirebilir. ‘DEĞİŞTİR’ butonuna basıldıkdan sonra yapılan işlemler aşağıdaki gibi;

private void button1_Click(object sender, EventArgs e)
{
   if ((eskiSifre_tb.Text == "") || (yeniSifre_tb.Text == ""))
   {
      MessageBox.Show("Lütfen Eski ve Yeni Şifrenizi Giriniz", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   }

   if (eskiSifre_tb.Text != KullaniciSifre)
   {
      MessageBox.Show("Eski Şifrenizi Lütfen Doğru Giriniz", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return;
   }

   if (MessageBox.Show("Şifre Değişikliğini Onaylıyormusunuz?", "Otomasyon", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) != DialogResult.Yes)
   { return; }

   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
   cnn.Open();
   SqlCommand cmd = new SqlCommand();

   cmd.Connection = cnn;
   cmd.CommandText = "up_KullaniciSifreDegistir";
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.AddWithValue("@KullaniciAdi", KullaniciAdi);
   cmd.Parameters.AddWithValue("@KullaniciSifre", yeniSifre_tb.Text); 

   try
   {
      cmd.ExecuteNonQuery();
   }
   catch (Exception ex)
   { MessageBox.Show(ex.Message); return; }

   MessageBox.Show("Şifre Başarıyla Değiştirildi", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Burada eski şifreyi nasıl karşılaştırdığımızı sorabilirsiniz, bu form’da bir tane string türünden public ‘KullaniciAdi’ ve ‘KullaniciSifre’ tanımlıyoruz. Bu form’u ilk ana form’da çağırdığımız için kullanıcının adını ve şifresini zaten biliyoruz.

Stored Procedure;

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO

ALTER proc [dbo].[up_KullaniciSifreDegistir]
@KullaniciAdi varchar(50),
@KullaniciSifre varchar(50)

as begin
update Kullanicilar set KullaniciSifre = @KullaniciSifre where KullaniciAdi = @KullaniciAdi
end

Son olarak admin yetkisine sahip olan kişinin kullanıcı ekleme işlemine geldi. Ben burada yeni kullanıcılar için şifreyi sabit ‘otomasyon’ olarak belirledim. Yeni kullanıcı ilk kez girdikden sonra şifresini değiştirebilir, admin de kullanıcının yetkilerini sonradan belirler.’Kullanıcı Ekle’ butonuna basılınca yapılan işlem;

private void button1_Click(object sender, EventArgs e)
{
   if (kullaniciAdi_tb.Text == "")
   { MessageBox.Show("Lütfen Bir Kullanıcı İsmi Giriniz!", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }

   if (MessageBox.Show("Yeni Kullanıcı Kaydını Onaylıyormusunuz?", "Otomasyon", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) != DialogResult.Yes)
   { return; }

   SqlConnection cnn = new SqlConnection();
   cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
   cnn.Open();
   SqlCommand cmd = new SqlCommand();

   cmd.Connection = cnn;
   cmd.CommandText = "up_KullaniciEkle";
   cmd.CommandType = CommandType.StoredProcedure;
   cmd.Parameters.AddWithValue("@KullaniciAdi", kullaniciAdi_tb.Text);
   cmd.Parameters.AddWithValue("@KullaniciSifre", sifre_tb.Text); 

   try
   {
      cmd.ExecuteNonQuery();
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
      return;
   }
   MessageBox.Show("Yeni Kullanıcı Başarıyla Eklendi", "Otomasyon", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Yine SQL Server’da tanımlamış olduğumuz bir stored procedure çağırarak kullanıcı ekliyoruz.

Stored Procedure;

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[up_KullaniciEkle]
@KullaniciAdi varchar(50),
@KullaniciSifre varchar(50)
as begin
   declare @KullaniciNo varchar(30);
   set @KullaniciNo = ((select Count(*) from Kullanicilar) + 1)
   insert into Kullanicilar values(@KullaniciNo, @KullaniciSifre, @KullaniciAdi)
end

Genel olarak Login form tasarımı bu şekilde elbette üstüne birkaç özellik daha koyarak geliştirilebilir. Umarım sizlere faydalı olur. Başka bir makalede görüşmek üzere.

Kolay gelsin iyi çalışmalar…

Paylaş:
61 Responses to C# ile Windows Formununa Login Girişi!
  1. Emre

    Dizayn ve kod kısmından çok yapılabilirlirlik ve görsellik açısından birçok programdan daha kullanışlı gözüküyor bu proje fikiriniz bile yeterli sayılabilir. Emeğine sağlık.

  2. Deniz

    Merhaba Hocam çok faydalı olmus ne emeklerle yaptığın belli fakat ben costractor kullanarak yetkilendirme yaptım ama çok karıştı kafam sizin bu örneği bana mail atarsanız yeni bir proğramla uğraşıyorum örnek alacağım çok şey var

  3. sahra

    bunu c diliyle nasıl yazabilirim

  4. adil

    KullaniciAdi = ds.Tables[0].Rows[0][2].ToString();
    KullaniciNo = (int)ds.Tables[0].Rows[0][0];
    string sifre = ds.Tables[0].Rows[0][1].ToString();

    bu kısımda KullaniciAdi KullaniciNo gibi yerleri tanımlıyamıyorum.
    KullaniciAdi’na hata veriyor sebebi ne olabilir.

    Not: Database’i örnektekiyle aynı oluşturdum

  5. Burak

    Çok haklısınız, genelde yazdığım projeleri paylaşıyorum fakat bu projeyi ne yazık ki kaybettim.

  6. Burak

    Kodun tamamını koymadığım için bu tür hatalar alman mümkün. Onlar global değişken olduğu için buton içinde tanımlanmamıştır. 2009 yılında yazılmış bir makale aradan 5 sene geçmiş, elbette ki ilk yıllardaki tecrübesizliğimden kaynaklanan senin görmediğin daha bir çok hata olabilir.

  7. Timuçin Öğün

    Hayatımda gördüğüm en boktan anlatım insan biraz açıklayıcı anlatır kafana göre gelişi güzel yazmışsın
    KullaniciAdi = ds.Tables[0].Rows[0][2].ToString();
    KullaniciNo = (int)ds.Tables[0].Rows[0][0];
    string sifre = ds.Tables[0].Rows[0][1].ToString();
    KullaniciSifre = sifre;
    böyle yazmışsın iyi güzel hoş bunların değişkenleri nerde tanımladık bunları hata veriyo ?

  8. Tuna

    Burak Bey, keşke projeyi de ekleseymişiniz. İndirip inceleyebilirdik. Takıldığımız yerleri proje üzerinde görebilirdik. Örneğin ;

    * Veritabanındaki “Izin” adlı tablodaki “ErisebilirMi” sütununun veri tipi nedir?
    * stokCik_tsmi, stokGir_tsmi, urunHazirla_tsmi, yetkilendirmeAyarlari_tsmi, kullaniciEkle_tsmi adlarını “menuStrip1” aracından değiştirdiğinizi belirtseydiniz.
    * KullaniciAdi = ds.Tables[0].Rows[0][2].ToString();
    KullaniciNo = (int)ds.Tables[0].Rows[0][0];
    satırlarında “KullaniciAdi” ve “KullaniciNo” bilgilerinin derleyici tarafından altının neden çizildiği sorusuna veri tpinin string olduğunu söyleseydiniz!
    * stokCik_tsmi.Enabled = YetkiDizisi[3];
    stokGir_tsmi.Enabled = YetkiDizisi[2];
    urunHazirla_tsmi.Enabled = YetkiDizisi[5];
    yetkilendirmeAyarlari_tsmi.Enabled = YetkiDizisi[0];
    kullaniciEkle_tsmi.Enabled = YetkiDizisi[0];
    satırlarında YetkiDizisi[x] şeklindeki ifadelerin derleyici tarafından altının çizilmemesi için yapılması gerekenleri belirtseydiniz!
    vs. vs….

    Çalışmanız çok güzel ya da işlevsel olabilir. Fakat unutmayınız ki;
    Ne bildiğiniz değil, Bilginizi karşı tarafa nasıl aktardığınız önemli.

  9. ilkay

    merhaba
    YetkiDizisi[yetkiIndis] = (bool)ds.Tables[0].Rows[i][0];

    belirtilen atama gerçekleştirelemedi hatası alıyorum yardımcı olursanız sevinirim

  10. ilkkan

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[up_KullaniciEkle]
    @KullaniciAdi varchar(50),
    @KullaniciSifre varchar(50)
    as begin
    declare @KullaniciNo varchar(30);
    set @KullaniciNo = ((select Count(*) from Kullanicilar) + 1)
    insert into Kullanicilar values(@KullaniciNo, @KullaniciSifre, @KullaniciAdi)
    end

    Sorgusunu yükleyemedim
    Ayrıca Yetkilendirme yaptığımda kullanıcıları yetkilendirmiyor .
    Ama el ile girdiğimde sql sorgularıyla yetkileri alıyor ve o kullanıcı üzerinde değişiklik yapabiliyorum. Ama kullanıcı açılırken . Kullanıcının yetki tablosundaki girdileri çıkmıyor.

  11. Onuralp Karaöz

    SqlConnection cnn = new SqlConnection(“Data Source=NIRVANA;Initial Catalog=CVeteriner;Integrated Security=True”);
    //cnn.ConnectionString = Properties.Settings.Default.ConnectionString;
    cnn.Open();
    DataSet ds = new DataSet();
    SqlDataAdapter sda = new SqlDataAdapter(“select * from CPersonel_Kullanicilar where KULLANICI = ‘” + TBKullanici.Text + “‘”, cnn);
    sda.Fill(ds);
    olcak 🙂 hata veren ConnectionString i aktif etmiyoruz // koyup kapatıyoruz

Bir Cevap Yazın

Your email address will not be published. Please enter your name, email and a comment.