#java
#java
Вопрос:
Получение переменной String name из JTextField
Я пытаюсь сопоставить значение этого столбца из базы данных и получить в этом столбце все значения строк
public User1 getUserDestination(String name){
try{
//String s="Select * FROM trainschedule WHERE Destination=" name1;
rs=stm.executeQuery("SELECT * FROM trainschedule WHERE Destination=" name);
// rs=stm.executeQuery(s);
if(rs.next()){
user1=new User1();
user1.setTrainNo(Integer.parseInt(rs.getString("Train_No")));
user1.setTrainName((rs.getString("tName")));
user1.setDeparture((rs.getString("Departure")));
user1.setDepartureTime((rs.getString("dTime")));
user1.setArrival((rs.getString("Arrival")));
user1.setArrivalTime((rs.getString("aTime")));
user1.setTicketPrice((rs.getString("Ticket_Price")));
System.out.println(user1.getTrainName());
return user1;
}
else{
return null;
}
}catch(Exception e){
e.printStackTrace();
}
return null;
}
Всегда выдает мне исключение sql, подобное этому
Unknown column in 'where clause'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97).
Комментарии:
1. Вы должны экранировать значение
name
одинарными кавычками. А еще лучше, используйтеPreparedStatement
и позвольте ему избежать проблем для вас.
Ответ №1:
Как упоминалось в комментариях, вы должны сделать это следующим образом (с PreparedStatement)
PreparedStatement ps = connection.prepareStatement("SELECT * FROM trainschedule WHERE Destination = ?");
ps.setString(1, name);
rs = ps.executeQuery();
if(rs.next()){
...