Не удается решить проблему отсутствия значения, указанного для параметра 1

#java #mysql

#java #mysql

Вопрос:

здравствуйте, я пытаюсь запустить этот код, но я сталкиваюсь с этой проблемой, и я не знаю, в чем проблема, я буду очень благодарен, если кто-нибудь сможет помочь, это код

 public List<String> AfficherParXp(String xpath) {
    List<String> lp = new ArrayList<>();
   try {
    
       String requete="select function_name from functions where Xpath= ?";
      
       pste = con.prepareStatement(requete);
       pste.setString(1,xpath);
      rs = pste.executeQuery();

     while(rs.next()) {
        
     lp.add(rs.getString("function_name"));
     } 
     
   } catch (SQLException ex) {
       Logger.getLogger(LoginwithInvalidIdTest.class.getName()).log(null, ex);
   }
    return lp;
}
  

это ошибка, которую я получаю

 java.sql.SQLException: No value specified for parameter 1
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
    at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2256)
    at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2236)
    at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2166)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1986)
    at test.java.Login.Suite.LoginwithInvalidIdTest.getAllFunctionsOfXpath(LoginwithInvalidIdTest.java:243)
    at test.java.Login.Suite.LoginwithInvalidIdTest.Test_LoginwithInvalidId(LoginwithInvalidIdTest.java:114)
    
  

Комментарии:

1. Вы пытаетесь добавить значение параметра к PreparedStatement , но ваш запрос String не содержит заполнителя ( ? ). Вместо этого вы объединили xpath переменную (что означает отсутствие необходимости в добавлении параметра и инструкции / запроса, которые подвержены SQL-инъекции (теоретически) **.

2. Используйте заполнитель для параметра, подобного String requete="select function_name from functions where Xpath = ?"

3. спасибо за ваш ответ, я заменил его заполнителем (?), и я все еще получаю ту же ошибку

4. Как теперь выглядит ваш код?

5. Запрос строки=»выбрать имя_функции из функций, где Xpath =?»; pste = con.prepareStatement(запрос); pste.setString(1,xpath); rs = pste.ExecuteQuery();