Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

A.J

Ajuda com sistema de login.

Mensagens Recomendadas

A.J

Olá á todos,

como ainda sou novato na area da programação me surgiu um erro e não sei como resolver..

tentei fazer um debug para ver se encontrava mas não consegui

alguém poderia me ajudar?

       public void Login()
       {
           if(txbUser.Text == "")
           {
               MessageBox.Show("Por favor preencha o campo 'Usuario' para poder logar-se", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               txbUser.Focus();
           }
           else if (txbSenha.Text == "")
           {
               MessageBox.Show("Por favor preencha o campo 'Senha' para poder logar-se", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               txbSenha.Focus();
           }
           else
           {
               try
               {
                   string usuario, senha;
                   MysqlConn = new MySqlConnection(strConn);
                   usuario = txbUser.Text;
                   senha = txbSenha.Text;
                   strMysql = "SELECT COUNT(ID) FROM tbl_market WHERE Usuario=@Usuario AND Senha=@Senha";
                   MySqlCommand cmd = new MySqlCommand(strMysql, MysqlConn);

                   cmd.Parameters.Add("@Usuario", MySqlDbType.VarChar).Value = usuario;
                   cmd.Parameters.Add("@Senha", MySqlDbType.VarChar).Value = senha;
                   MysqlConn.Open();

                   int Teste = (int)cmd.ExecuteScalar();
                   if (Teste > 0)
                   {
                       MessageBox.Show("Acesso liberado, Seja bem vindo:" + txbUser.Text);
                   }
                   else
                   {
                       MessageBox.Show("Usuario ou Senha são invalidos", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                   }

               }
               catch (Exception Error)
               {
                   MessageBox.Show("Ocorreu o seguinte erro: " + Error, "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               }
           }

meu erro se encontra na parte

int Teste = (int)cmd.ExecuteScalar();

if (Teste > 0)

eu não sei como proceder...

segue abaixo o erro.

uhDwkJ2.png

//linha 82 é a linha da int...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Verifica, em debug, qual o valor que o ExecuteScalar está a trazer.

Desconfio que está a sair em erro porque não estás a adicionar os parâmetros corretamente.

Experimenta trocar os cmd.Parameters.Add por o AddWithValue e verifica o que entra e o que sai em step-debug.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
A.J

Olá Riberio55,

então tentei de várias formas afim de solucionar o problema, porém não objetive sucesso...

abaixo as formas na parte do parametro

cmd.Parameters.Add(new MySqlParameter("@Usuario", MySqlDbType.VarChar)).Value = txbUser.Text;
cmd.Parameters.Add(new MySqlParameter("@Senha", MySqlDbType.VarChar)).Value = txbSenha.Text;
 

cmd.Parameters.AddWithValue("@Usuario", MySqlDbType.VarChar).Value = txbUser.Text;
cmd.Parameters.AddWithValue("@Senha", MySqlDbType.VarChar).Value = txbSenha.Text;
fiz o debug que você me recomendou porém não consegui identificar nada, a variavel me retorna 0 e segue para o cath

minhas variaveis veja se está correta

MySqlConnection MysqlConn = null;
private string strConn = "Server=localhost; Userid=root; Database=db_market; ";
private string strMysql = string.Empty;
de uma olhada nessa parte parece que o valor que coloquei na textbox me retornou null; será isso o problema?

DxXQQTX.png

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Se segue para o catch, verifica a Message da Exception. Está lá a razão do insucesso.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
N3lson

coloca o mysql.Open(); antes do

cmd.Parameters.AddWithValue("@Usuario", txbUser.Text);

cmd.Parameters.AddWithValue("@Senha",txbSenha.Text);

 

e coloca o addWithValue como está acima


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa noite,

Se a memória não me está a falhar o executescalar, retorna um valor do tipo System.Object. Por isso o erro de cast, para int.

 

 public void Login()
       {
           if(txbUser.Text == "")
           {
               MessageBox.Show("Por favor preencha o campo 'Usuario' para poder logar-se", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               txbUser.Focus();
           }
           else if (txbSenha.Text == "")
           {
               MessageBox.Show("Por favor preencha o campo 'Senha' para poder logar-se", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               txbSenha.Focus();
           }
           else
           {
               try
               {
                   string usuario, senha;
                   MysqlConn = new MySqlConnection(strConn);
                   usuario = txbUser.Text;
                   senha = txbSenha.Text;
                   strMysql = "SELECT COUNT(ID) FROM tbl_market WHERE Usuario=@Usuario AND Senha=@Senha";
                   MySqlCommand cmd = new MySqlCommand(strMysql, MysqlConn);

                   cmd.Parameters.Add("@Usuario", MySqlDbType.VarChar).Value = usuario;
                   cmd.Parameters.Add("@Senha", MySqlDbType.VarChar).Value = senha;
                   MysqlConn.Open();

                   int? Teste = (int?)cmd.ExecuteScalar();
		   if (Test.HasValue)
		   {
			if (Teste > 0)
                   	{
	                       MessageBox.Show("Acesso liberado, Seja bem vindo:" + txbUser.Text);
        	        }
                	else
                   	{
                       		MessageBox.Show("Usuario ou Senha são invalidos", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                   	}
                    }
		   else {	MessageBox.Show("Ocorreu um erro", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);}
                   

               }
               catch (Exception Error)
               {
                   MessageBox.Show("Ocorreu o seguinte erro: " + Error, "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               }
           }

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.