Array
(
)

Erro de Login com MySQL

Raniel Nogueira
   - 07 jan 2014

Estou com um erro na hora de realizar login, criei uma classe chamada clsBanco onde recebe por meio de outra Classe as informações de Usuario e Senha, estava utilizando Firebird e estava funcionando perfeitamente agora migrei para o MySQL e está dando um erro vou postar :
Meu método para realizar Login:
#Código

public static void login (clsLogin log, frmPrincipal principal)
        {
            using(MySqlConnection conexaoMySQL = clsBanco.getInstancia().getConexao())
            {
                try
                {
                    
                    string mSQL = "SELECT count(*) FROM USUARIOS WHERE USUARIO=@usuario AND SENHA=@senha";
                    MySqlCommand cmd = new MySqlCommand(mSQL, conexaoMySQL);
                    cmd.Parameters.Add("@usuario",MySqlDbType.VarChar).Value = log.Usuario;
                    cmd.Parameters.Add("@senha", MySqlDbType.VarChar).Value = log.Senha;
                    conexaoMySQL.Open();
                    int i = (int)cmd.ExecuteScalar();

                    if (i > 0)
                    {
                        principal.Enabled = true;
                        principal.Show();
                    }
                    else
                    {
                        MessageBox.Show("Usuario/Senha estão inválidos.", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Question);
                    }

                    }
                catch (FbException ex)
                {
                    throw ex;
                }
                finally
                {
                    conexaoMySQL.Close();
                }
            }


Agora a ação de Clique do meu botão entrar:
#Código
private void btnEntrar_Click(object sender, EventArgs e)
        {
            
            try
            {
                clsLogin login = new clsLogin();
                frmPrincipal p = new frmPrincipal();
                login.Usuario = txtUsuario.Text;
                login.Senha = txtSenha.Text;
                clsBanco.login(login, p);
                p.Label(txtUsuario.Text);

                if (p.Enabled == true)
                {
                    Visible = false;
                }
                else
                { 
                
                }
            }

            catch (Exception erro)
            {
                MessageBox.Show("Erro de conexão com banco de dados" + erro.Message, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Question);
            }
        }

Raniel Nogueira
   - 07 jan 2014

Esqueci de mandar a imagem com o erro rsrsrs.Erro de Login (Clique na imagem para abrir em uma nova janela)

Raniel Nogueira
   - 08 jan 2014

Alguém tem alguma solução?

Chiodini
   - 08 jan 2014

Raniel,

Cara depura o codigo e ve se a linha que esta dando o erro é na linha 13.

e posta ai.
Acho que esse Cast que tais fazendo de (int) é o problema.

att
Chiodini

Chiodini
   - 08 jan 2014

Tenta fazer ali no reader
o seguinte

#Código


MySqlDataReader reader = cmd.ExecuteReader();
int res = reader.GetInt16(0); 



Att
Chiodini

Aluisio Cavalcante
   - 08 jan 2014

mas pq da esse erro? pensei que tivesse certo o codigo.

Chiodini
   - 09 jan 2014

Então se for realmente nesta linha,
O erro da pois ele nao consegue converter o arquivo para um inteiro explicitamente desta forma.

Precisaria usar o Convert.Int16();

Mais se nao for nessa linha.,
mostra a linha certinha que esta ocorrento o erro.
pelo Debug da pra ter ideia.

att,
Chiodini

Chiodini
   - 09 jan 2014

O erro pode estar na linha onde ele monta a conexão
por isso esta impedindo a conexao com o banco.

att,
Chiodini

Raniel Nogueira
   - 09 jan 2014

Vou verificar meu appConfig, mais está porque consigo fazer consultas no banco em meu formulário principal.

Chiodini
   - 09 jan 2014

Raniel,
Então seria interessante você destacar a linha que ocorre o erro na execução.
Coloca um Breakpoint no metodo e depura ele.

att,
Chiodini

Chiodini
   - 09 jan 2014

Raniel,
Então seria interessante você destacar a linha que ocorre o erro na execução.
Coloca um Breakpoint no metodo e depura ele.

att,
Chiodini

Raniel Nogueira
   - 09 jan 2014

Consegui amigos LOL, olha só como fiz:

#Código

int i = Convert.ToInt16(cmd.ExecuteScalar());


Obrigado a todos, abraço.