#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();