我正在尝试使用PreparedStatement进行搜索,但查询没有返回结果:
final Session session = em.unwrap(Session.class);
final String sql = "SELECT u.name FROM Users AS u WHERE u.name LIKE ?";
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
try (PreparedStatement stmt = connection.prepareStatement(sql))
{
stmt.setString(1, "%" + nameTerm + "%");
stmt.executeQuery();
}
}
});
DB中有记录,应该返回结果。我在iSeries Navigator中测试我的查询,它的工作原理。但是如果我通过PreparedStatement执行它,它就不会返回任何结果。我正在使用DB2数据库。
修改
我忘了提到仅当搜索字词包含撇号时才会出现此问题。
答案 0 :(得分:0)
pstmt.executeUpdate()
执行预备语句但我在您的代码中找不到它
你必须致电executeUpdate()
api来执行准备好的陈述。
尝试
try (PreparedStatement stmt = connection.prepareStatement(sql)){
stmt.setString(1, "%" + nameTerm + "%");
stmt.executeUpdate();
}
答案 1 :(得分:0)
您只是设置PreparedStatement
,实际上并没有调用executeUpdate()
方法,而是调用数据库。看看这个PreparedStatement Tutorial