[Çözüldü] C# boolean sorunu

Başlatan bkal26, 07 Temmuz 2009 - 11:14:23

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

bkal26

Arkadaşalr benim ufak bir sorunum var.Aşağıdaki kodu çalıştırdığımda hiç bir şey girmediğim halde kullanıcı kodu yanlış penceresi de açılıyor bunun önüne nasıl geçebilirim acaba yardımcı olursanız çok sevinirim.Kafam iyicene karıştı çünkü :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Acd_Proje_Takip_Sistemi
{
   public partial class GirisEkrani : Form
   {
       string Baglanti = "Initial Catalog=ACD_PROJE;Data Source=server;User ID=sa;password=sa;";
       SqlConnection con;

       public GirisEkrani()
       {
           InitializeComponent();
       }

       private void GirisEkrani_Load(object sender, EventArgs e)
       {

       }
       public void Kontrol()
       {
           
           try
           {
               if (txt_KullanıcıKodu.Text == "")
               {
                   MessageBox.Show("Kullanıcı Kodu Boş Bırakılamaz");
                   return;

               }
               
               else if (txt_Sifre.Text == "")
                   MessageBox.Show("Kullanıcı Şifresi Boş Bırakılamaz");
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
       }
       public void Baglan()
       {
           try
           {
               string kullanıcıkodu = txt_KullanıcıKodu.Text;
               string sifre = txt_Sifre.Text;


               string sqlText = "Select *  from TNM_Kullanıcı Where K_KullanıcıKodu ='" + kullanıcıkodu + "'  and  K_Sifre ='"+ sifre +"'";
               con = new SqlConnection(Baglanti);
               SqlCommand cnm = new SqlCommand(sqlText, con);
               con.Open();
               DataTable dt = new DataTable();
               SqlDataAdapter adp = new SqlDataAdapter(cnm);
               adp.Fill(dt);

               if (dt.Rows.Count!=0)
               {
                   Ana ana = new Ana();
                   ana.Show();
                   this.Visible = false;
         
               }
               else
               {
                   MessageBox.Show("Kullanıcı Kodu Yalnıs");
               }
           }

           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);

           }
           finally
           {
               con.Close();
           }
       
       }

       private void Giris_Click(object sender, EventArgs e)
       {
           Kontrol();
           Baglan();

       }

       private void Cıkıs_Click_1(object sender, EventArgs e)
       {
           Application.Exit();


       }
   }
}


Bu kodlarda if lerden önce bool kullanmam gerekiyor ama işin içinden çıkamadım birtürlü.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : Sal 07 Tem 2009 10:28:24 GMT-2

Yukarıda eğer hiç bir şey girilmediyse sadece kullanıcı kodu boş bırakılamaz çıkması gerekiyor.Ama hiç bir şey girmeden giriş tuşuna bastığımda "kullanıcı kodu boş bırakılamaz"  haricinde kullanıcı kodu yanlış diye de mesaj çıkıyor bundan nasıl kurtulabilirim acaba?

raspacı

#1
c# bilmem zaten kodu da php gibi karman çormanmış. phpden tiksindiğim için python öğreniyorum zaten.
Neyse if (dt.Rows.Count!=0) burada bir eşitlik karşılaştırması yapılmıyor da atama yapılıyor sanki. O yüzden de else satırı çalışıyor sanırım. if (dt.Rows.Count !== 0) Böyle denersen belki faydası olur.
nereye gidersen git kendini de götürürsün.

rutku

Mantık hatası var sanki. Senin yerinde olsam veritabanına bağlantıda girilen verileri sorgu yapmak yerine, iki arrayliste veritabanındaki kullanıcı adı ve şifresini atarım. Sonra bir eşleme yaparım. Uyuşursa AnaPaneli açarım. Çünkü senin yaptığın şekilde eğer veritabanında kullanıcı olmazsa hata verecektir. C#ta o an db hatalarında program dururmu bilmiyorum ama durmazsa senin değer sıfır döndürecektir ve else kısmı çalışacaktır. Onun yerine ;


for(int i =0; i < dbKullanici.size(); i++){
if(dbkullannici.get(i).equals(txt_kullanici.getText()) != false){
dbSifre.get(i).equals(txt_sifre.getText()) !=false){
AnaPaneliYukle();
}
}


Bu kodu Java olarak yazdım. C# a çevirip denersen mantık olarak çok sağlıklı çalışacaktır  :)

Kolay gelsin ...
Hayallerini kodla ...

uKiriş
Mezgeldek

canosayan

c# ile hiç veritabanı kullanmadım.(acces ile denemem olmuştu.)
dt.Rows.Count!=0 ile yanlış anlamadıysam listedeki isimlerden biri ile olsun uyuşmasını istedin. yanı virtabanından alınan isimlerden biri olsun eşlessin demiş oldun.
bunun yerine dt.Rows.Count>0 kullansanız nasıl olur.

birde boolean true yada false değeri ile çalışmıyor mu? ben mi yanlış biliyorum(yanlış bilmem mümkündür)
Chmod bizim işimiz.

bkal26

Tamamdır arkadaşlar Sorunu Şöyle Çözdüm.Kodlar aşağıda:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Acd_Proje_Takip_Sistemi
{
    public partial class GirisEkrani : Form
    {
        string Baglanti = "Initial Catalog=ACD_PROJE;Data Source=server;User ID=sa;password=sa;";
        SqlConnection con;

        public GirisEkrani()
        {
            InitializeComponent();
        }

        private void GirisEkrani_Load(object sender, EventArgs e)
        {

        }
        public Boolean Kontrol()
        {
            Boolean donen = false;

       
            try
            {
                if (txt_KullanıcıKodu.Text == "")
                {
                    MessageBox.Show("Kullanıcı Kodu Boş Bırakılamaz");
                    donen = true;
                }

                else if (txt_Sifre.Text == "")
                {
                    MessageBox.Show("Kullanıcı Şifresi Boş Bırakılamaz");
                    donen = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return donen;
        }
        public void Baglan()
        {
            try
            {
                string kullanıcıkodu = txt_KullanıcıKodu.Text;
                string sifre = txt_Sifre.Text;


                string sqlText = "Select *  from TNM_Kullanıcı Where K_KullanıcıKodu ='" + kullanıcıkodu + "'  and  K_Sifre ='"+ sifre +"'";
                con = new SqlConnection(Baglanti);
                SqlCommand cnm = new SqlCommand(sqlText, con);
                con.Open();
                DataTable dt = new DataTable();
                SqlDataAdapter adp = new SqlDataAdapter(cnm);
                adp.Fill(dt);

                if (dt.Rows.Count!=0)
                {
                    Ana ana = new Ana();
                    ana.Show();
                    this.Visible = false;
           
                }
                else
                {
                    MessageBox.Show("Kullanıcı Kodu Yalnıs");
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            }
            finally
            {
                con.Close();
            }
       
        }

        private void Giris_Click(object sender, EventArgs e)
        {
            if (!Kontrol())
            {
                Baglan();
            }
        }
        private void Cıkıs_Click_1(object sender, EventArgs e)
        {
            Application.Exit();


        }
       
    }
}





Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 09 Temmuz 2009 - 09:43:38

Şimdi istediğim Gibi Oldu... :D

garafatma

Şurada kullanılan termilerden pek birşey anlamadıysamda geçmiş olsun :)
Bira, Tanrı'nın bizi sevdiğinin ve eğlenmemizi istediğinin kanıtıdır.

>-- Askıdaki Çeviri --< Ubuntu Türkçe Çevirilerine Sizde Destek Olun
Elveda metal müziğin tanrısı... \m/ Ronnie James DIO: 1942 - 2010