Java Prepared语句不返回具有like查询的结果
我正在尝试使用PreparedStatement进行搜索,但查询未返回任何结果:Java Prepared语句不返回具有like查询的结果,java,jdbc,db2,prepared-statement,sql-like,Java,Jdbc,Db2,Prepared Statement,Sql Like,我正在尝试使用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(
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();
}
}
});
数据库中有记录,它应该返回一个结果。我在iSeries Navigator中测试了我的查询,它可以正常工作。但如果我通过PreparedStatement执行它,它不会返回任何结果。我正在使用DB2数据库
编辑
我忘了提到,只有在搜索词包含撇号时才会出现此问题。pstmt.executeUpdate()执行准备好的语句,但我在您的代码中找不到它。您必须调用
executeUpdate()
api来执行准备好的语句
试一试
您只设置了
PreparedStatement
,实际上并没有调用调用数据库的executeUpdate()
方法。检查一下这个你没有在上面的代码中执行任何东西,你只是在设置一个参数值。不要使用executeUpdate()
进行查询,不管别人怎么建议——使用execute()
或executeQuery()
try (PreparedStatement stmt = connection.prepareStatement(sql)){
stmt.setString(1, "%" + nameTerm + "%");
stmt.executeUpdate();
}