По крайней мере один параметр текущего оператора является неинициализированной ОШИБКОЙ

#java #database #parameters #initialization #derby

#Ява #База данных #параметры #инициализация #дерби

Вопрос:

Я новичок в Java и дерби и немного заблудился.

Я использую jframe и derby. Пытаюсь выполнить проверку электронной почты / пароля. Сначала я объединялся с утверждением, но прочитал в Интернете, что лучше всего использовать подготовленные утверждения. При использовании электронной почты в качестве первичного ключа в заявлении я получал лексическую ошибку из-за»@». Теперь , с подготовленным оператором, я получаю «По крайней мере, один параметр текущего оператора неинициализирован».

Не уверен, что ввожу что-то не так….

Это метод, который я создал.

публичный недействительный логин() {

 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()) amp;amp; rs.getString(2).equals(jtxtPassword.getText())){   JOptionPane.showMessageDialog(null, "Bienvenido" rs.getString(3), "Validacion 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());   }  }  

}

Большое спасибо за помощь нубу, лол…

Ответ №1:

Вам необходимо установить значение для каждого параметра, указанного a ? , перед вызовом ps.executeQuery() . Например, вы могли бы сделать:

 ps = conn.prepareStatement(  "select email,password,nombre from Usuarios where email=?");  ps.setString(1, "henry.fonda@mgm.com"); // added this line  ResultSet rs = ps.executeQuery();  

В вашем запросе объявлен только один параметр, и именно поэтому включен один установщик ps .