es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Al menos un parámetro de la declaración actual no está inicializado. ERROR

Soy nuevo en Java y Derby y estoy un poco perdido.

Estoy usando JFrame y Derby. Intentando hacer una validación de email y contraseña. Al principio concatenaba con la declaración “with statement”, pero leí en línea que es mejor usar “prepared statements”. Mientras usaba el email como clave primaria, con la declaración “with statement”, obtenía un error léxico debido al ‘@’. Ahora, con la declaración “prepared statement”, estoy obteniendo “Al menos un parámetro de la declaración actual no está inicializado”.

No estoy seguro si estoy ingresando algo incorrecto…

Este es el método que creé.

public void login() {

if ((jtxtEmail.getText().equals(“”))) {

   JOptionPane.showMessageDialog(null, "Debes ingresar tu email y contraseña.", "Error al ingresar Usuario y contraseña", JOptionPane.ERROR_MESSAGE);

} else {

   try {

       conectar();

       ps = conn.prepareStatement("select email,password,nombre from Usuarios where email=?");

       ResultSet rs = ps.executeQuery();

       while (rs.next()) {

           if (rs.getString(1).equals(jtxtEmail.getText()) && rs.getString(2).equals(jtxtPassword.getText())){

               JOptionPane.showMessageDialog(null, "Bienvenido"+rs.getString(3), "Validación Correcta", JOptionPane.INFORMATION_MESSAGE);

               new DirectoryMale().setVisible(true);

           }else{

               JOptionPane.showMessageDialog(null, "Debes ingresar tu email y contraseña.", "Error al ingresar Usuario y contraseña", JOptionPane.ERROR_MESSAGE);

           }
       }

       desconectar();

       ps.close();

   } catch (HeadlessException | SQLException ex) {

       JOptionPane.showMessageDialog(null, "Error.\n" + ex.getMessage());

   }

}
}

Gracias por ayudar a un novato, jeje…

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hola,

    Parece que estás teniendo algunos problemas con la validación de correo electrónico/contraseña usando Java y Derby. Es genial que estés explorando las sentencias preparadas como una alternativa a la concatenación.

    En cuanto a tu problema específico, el mensaje de error “Al menos un parámetro de la sentencia actual no está inicializado” generalmente indica que no has establecido un valor para uno de los parámetros de la sentencia preparada antes de ejecutar la consulta.

    Al analizar tu código, parece que estás estableciendo correctamente el parámetro de correo electrónico con esta línea:

    ps = conn.prepareStatement(“select email,password,nombre from Usuarios where email=?”);

    Sin embargo, luego procedes a ejecutar la consulta sin pasar un valor para el parámetro de correo electrónico:

    ResultSet rs = ps.executeQuery();

    Necesitas establecer el valor del parámetro de correo electrónico antes de ejecutar la consulta. En lugar de esta línea:

    ResultSet rs = ps.executeQuery();

    Deberías usar:

    ps.setString(1, jtxtEmail.getText());
    ResultSet rs = ps.executeQuery();

    Esto establece el valor del parámetro de correo electrónico con el valor en tu campo de texto de correo electrónico antes de ejecutar la consulta.

    Intenta hacer este cambio y verifica si resuelve tu problema. ¡Buena suerte!

Comments are closed.