none
System.Data.OleDb.OleDbException: 'No se han especificado valores para algunos de los parámetros requeridos.' RRS feed

  • Pregunta

  • Hola, soy nuevo en esto de la programacion y estoy intentado realizar un login en c# con base de datos access y me encuentro con este problema:

    System.Data.OleDb.OleDbException: 'No se han especificado valores para algunos de los parámetros requeridos.'

    el codigo es el siguiente:

     connection.Open();
                    using (OleDbCommand command = new OleDbCommand())
                    {
                        command.Connection = connection;
                        command.CommandText = "select * from Users where LoginUser=@user and Password=@pass";
                        command.Parameters.AddWithValue("@user", user);
                        command.Parameters.AddWithValue("@pass", pass);
                        command.CommandType = CommandType.Text;
                        OleDbDataReader reader = command.ExecuteReader();

    he probado con la cadena de otras formas :

                        command.CommandText = @"select * from Users where LoginUser=? and Password=?";

    pero me manda el mismo mensaje.

    las variables user y pass son cargadas en un paso anterior y verifique su contenido en el depurador.

    Anteriormente me daba problemas la conexion pero lo solucioné instalando el AccessDatabaseEngine 2010 de 32bits porque el de 2016 y 64 bits me daba el mismo error y el de 32 me decia que tenia instalado el office de 64 y que debia desinstalarlo antes de continuar.

    domingo, 22 de septiembre de 2019 20:53

Respuestas

  • Gracias a todos por responder. Encontré el error. Lo que falto fue el simbolo @ al inicio de la cadena de la consulta.

    command.CommandText = @"select * from Users where LoginName=@user and Password=@pass";

    • Marcado como respuesta sebashaw505 lunes, 23 de septiembre de 2019 13:39
    lunes, 23 de septiembre de 2019 13:39

Todas las respuestas

  • Creo que tienes que hacerlos a sin pero no estoy muy seguro.
    connection.Open();
                    using (OleDbCommand command = new OleDbCommand())
                    {
                        command.Connection = connection;
                        command.CommandText = "select * from Users where LoginUser='@user' and Password='@pass'";
                        command.Parameters.Add("@user", user);
                        command.Parameters.Add("@pass", pass);
                        command.CommandType = CommandType.Text;
                        OleDbDataReader reader = command.ExecuteReader();
    Le he puesto las comillas simples y solo add.

    • Editado brok4d domingo, 22 de septiembre de 2019 21:26
    domingo, 22 de septiembre de 2019 21:26
  • hola

    El codigo que nos muestras esta correcto, deberia funcionar

    quizas particularmente usaria

    connection.Open();
    
    string query = "select * from Users where LoginUser=@user and Password=@pass";
    using (OleDbCommand command = new OleDbCommand(query, connection))
    {
    	command.Parameters.AddWithValue("@user", user);
    	command.Parameters.AddWithValue("@pass", pass);
    
    	OleDbDataReader reader = command.ExecuteReader();


    pero solo seria para reducir algunas lineas de codigo

    para asignar parametros tambien se usa

    command.Parameters.Add("@user", OleDbType.VarChar).Value = user;
    command.Parameters.Add("@pass", OleDbType.VarChar).Value = pass;

    pero igual como lo tenias no veo porque no funcione

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de septiembre de 2019 10:04
  • Imagino que debes tener mas campos en esa tabla a los que no les estás pasando datos, al usar SELECT todos los parametros deberían tener datos

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    lunes, 23 de septiembre de 2019 10:18
  • Gracias a todos por responder. Encontré el error. Lo que falto fue el simbolo @ al inicio de la cadena de la consulta.

    command.CommandText = @"select * from Users where LoginName=@user and Password=@pass";

    • Marcado como respuesta sebashaw505 lunes, 23 de septiembre de 2019 13:39
    lunes, 23 de septiembre de 2019 13:39
  • hola

    >>Lo que falto fue el simbolo @ al inicio de la cadena de la consulta.

    eso no es la solucion

    poner o no el @ no hace diferencia si el string esta en una sola linea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de septiembre de 2019 13:46