2015-08-04 2 views
0

Я пытаюсь поймать параметр из базы данных MYSQL и распечатать его на странице JSP через весенний mvc.Spring mvc - jsp MySQLSyntaxErrorException

У меня есть следующая функция в мой контроллер:

@RequestMapping(value = "/showentry") 
public ModelAndView showentry(@RequestParam("id") String id){ 
    System.out.println("xxxxxxxxxxxxxxxxxxxxxxxx" + id); 
    entries = dao.search(id); 
    ModelAndView mav = new ModelAndView(); 
    mav.addObject("list", entries); 
    return mav; 
} 

, которые получают параметр «Id» из следующего вида:

<form action="showentry"> 
    <input type= "hidden" name="id" value = "${item.id}"> 
    <button> Show Entry </button> 
    </form> 

функция, которая вызывает метод showentry находится в DAO класс:

@Override 
public List<Entry> search(String id) { 
    List<Entry> res = new ArrayList<Entry>(); 
    String sql = "SELECT * FROM Person WHERE Id = ? ;"; 
    Connection conn = null; 
    PreparedStatement ps = null; 
    ResultSet resultSet = null; 
    try { 
     //open connection 
     conn = dataSource.getConnection(); 

     //prepare the statement 
     ps = conn.prepareStatement(sql); 

     //bind parameters to preparedstatement 
     ps.setString(1, id); 

     //execute the statement 
     resultSet = ps.executeQuery(sql); 

     while (resultSet.next()) { 
      Entry entry = new Entry(); 
      entry.setId(resultSet.getInt("id")); 
      entry.setCn(resultSet.getString("cn")); 
      entry.setSn(resultSet.getString("sn")); 
      entry.setPn(resultSet.getString("pn")); 
      res.add(entry); 
     } 
    } catch (SQLException ex) { 
     //[...] 
    } 
    return res; 
} 

Я могу напечатать на журналах строку с идентификатором, связанным с записью, например достаточно: xxxxxxxxxxxxxxxxxxxxxxxx 32

Но это не печатает на СПЯ, и он возвращает ошибку:

net.tirasa.springaddressbook.SpringEntryDAO search 
GRAVE: null 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 

там что-то не так со строки SQL?

ответ

2

Вы должны удалить patameter в resultSet = ps.executeQuery(sql);

должно быть

resultSet = ps.executeQuery(); 

Смотрите Javadoc от метода executeQuery(String sql):

Note:This method cannot be called on a PreparedStatement or CallableStatement

Также удалите ; в конце вашего :

String sql = "SELECT * FROM Person WHERE Id = ?"; 
+0

описание товара ook. – MdC

0

ли вы попробуйте удалить точку с запятой внутри SQL

Строка SQL = «SELECT * FROM Person WHERE Id =? ; ";

Смежные вопросы