как исправить соответствие ComboBox getSelectedItem() из базы данных mysql

#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()){
...