none
O que significa esse erro "Specified cast is not valid"? RRS feed

  • Pergunta

  • gente, eu estou fazendo uma tela para login, mas toda vez que tento compilar da esse erro

    Specified cast is not valid

    o codigo completo é esse

    MySqlConnection sqlconn = null;
            private string strconn = @"Server=localhost; User Id=root; DataBase=betagames";
            private string _sql = string.Empty;

            public Login()
            {
                InitializeComponent();
            }

            public void logar()
            {
                sqlconn = new MySqlConnection(strconn);
                string usu, pwd;
                txtusuario.Focus();

                try
                {
                    usu = txtusuario.Text;
                    pwd = txtsenha.Text;

                    _sql = "select count(coduser) from usuário where usuario = @usuario and senha = @senha";

                    MySqlCommand cmd = new MySqlCommand(_sql, sqlconn);

                    cmd.Parameters.Add("@usuario", MySqlDbType.VarChar).Value = usu;
                    cmd.Parameters.Add("@senha", MySqlDbType.VarChar).Value = pwd;

                    sqlconn.Open();

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

                    if (v > 0)
                    {
                        Home home = new Home();
                        home.ShowDialog();
                    }

                    else
                    {
                        MessageBox.Show("Erro ao logar");
                    }

                }
                catch (MySqlException erro)
                {
                    MessageBox.Show(erro + "No banco");
                }

            }

     e aponta o erro para a linha 43  int v = (int)cmd.ExecuteScalar(); 

    podem me ajudar?

    segunda-feira, 16 de setembro de 2013 01:25

Respostas

  • Colocar um var id = cmd.EcecuteScalar(), para que você tenha idéia do retorno!

    Fúlvio Cezar Canducci Dias

    • Sugerido como Resposta Giovani Cr sexta-feira, 20 de setembro de 2013 13:55
    • Marcado como Resposta Giovani Cr segunda-feira, 23 de setembro de 2013 12:54
    segunda-feira, 16 de setembro de 2013 12:16

Todas as Respostas

  • Amauri,

    Tente assim:

    var v = cmd.ExecuteScalar();


    Ricardo Minoru Makiyama



    segunda-feira, 16 de setembro de 2013 02:00
  • dessa maneira apareceu a seguinte mensagem

    operator '>' cannot be applied to operands of type 'object' and 'int'

    segunda-feira, 16 de setembro de 2013 02:24
  • Bom dia Amauri,

    O ExecuteScalar, esta retornando um Object, por esse motivo você não está conseguindo converter para int.

    Tente o Seguinte, como o Ricardo Minoru disse, faça o seguinte:

    var v = cmd.ExecuteScalar();

    e depois, pelo QuickWatch, veja oque está sendo retornado na Var v.

    Assim você descobre o conteúdo.

    Caso ainda tenha alguma duvida, poste o problema melhor explicado de acordo com o visto no QuickWatch para que possamos te ajudar


    Julio Arruda
    __________________________________________
    Se foi util, marque como resposta
    .Net Coders
    Coordenador .Net Coders

    • Sugerido como Resposta Julio ArrudaMVP segunda-feira, 16 de setembro de 2013 11:35
    segunda-feira, 16 de setembro de 2013 11:35
  • Amauri,

    Acredito que seu ExecuteScalar() esteja retornando um valor nulo, devido a isto seu cast explícito está gerando uma exception, uma outra maneira de contornar isso seria assim:

    int? id = (int?)cmd.ExecuteScalar();
    if(id.HasValue)
    {
      // consumir id.Value
    }



    Ricardo Minoru Makiyama



    segunda-feira, 16 de setembro de 2013 12:13
  • Colocar um var id = cmd.EcecuteScalar(), para que você tenha idéia do retorno!

    Fúlvio Cezar Canducci Dias

    • Sugerido como Resposta Giovani Cr sexta-feira, 20 de setembro de 2013 13:55
    • Marcado como Resposta Giovani Cr segunda-feira, 23 de setembro de 2013 12:54
    segunda-feira, 16 de setembro de 2013 12:16
  • Bom dia Amauri,

    Você chegou a testar as sugestão que lhe foiram passadas?

    Caso ela funcione não esqueça de marcar como resposta para fechar a sua thread.

    Att,

     


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 20 de setembro de 2013 13:57