Я думаю, что проблема в этой строке String q = "выберите pcode, pname, pprice из машины, где us =" + name;
Да, потому что имя (по-видимому, солнечное) не в кавычках SQL, поэтому выглядит как ссылка на столбец.
НИКОГДА использовать конкатенацию строк для добавления значений в запросы SQL. Используйте подготовленные операторы вместо:
PreparedStatement ps = con.prepareStatement("select pcode ,pname,pprice from car where us = ?");
ps.setString(1, name);
ResultSet rs = ps.executeQuery();
Таким образом, информация обрабатывается как данные, а не как SQL (должным образом экранируется при необходимости и т. Д.). На что стоит обратить внимание:
- Вы используете
?
, куда идут значения. Вы не ставите ?
в кавычки или что-либо еще, даже если вы собираетесь использовать строку для значения.
- Вы получите подготовленное заявление, позвонив по номеру
prepareStatement
.
- Вы не передаете строку в
executeQuery
. (Это важно, потому что, к сожалению, вы можете передать строку в executeQuery
на PreparedStatement
, что обходит весь смысл использования подготовленных операторов; это должно было быть определено, чтобы вызвать исключение, но, к сожалению, это не так.)
Позвольте представить вам моего друга Бобби :
![Her daughter is named Help I'm trapped in a driver's license factory.](https://i.stack.imgur.com/wZVco.png)