我正在尝试使用PreparedStatement
进行SELECT,但不会得到任何结果,尽管数据存在。如果我使用Statement
代替,我会得到所需的结果,所以不确定为什么我没有得到PreparedStatement
的任何内容。
有什么想法吗?
这是我的代码:
String species = "Snail";
PreparedStatement preparedStatement = con.prepareStatement("Select * from lifeforms where species=?",PreparedStatement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, species);
preparedStatement.execute();
ResultSet resultSet = preparedStatement.getGeneratedKeys();
另外 - 我试过了
resultSet = preparedStatement.execute();
但是这不会编译,说我必须改变resultSet
以期望一个布尔值。
对此的任何见解将不胜感激。
很抱歉,如果这是显而易见的事情,但我已经阅读了文档,直到我几乎失去知觉,而我只是在学习java。
答案 0 :(得分:2)
啊,所以我终于找到了这个问题的答案 - 以防其他人被困在同一件事上..
execute()
方法没有返回值,尽管编译器建议它期望一个布尔返回值。也许它只是为了成功而返回true或false?
executeUpdate()
方法返回更新/插入或删除的记录数的int值。
要获取查询语句的结果集(例如,从someTable中选择*),请使用
ResultSet rs = preparedStatement.executeQuery()
方法。
这会将实际查询结果返回到ResultSet变量。
答案 1 :(得分:2)
execute()
函数返回一个布尔值,因此如果你想执行一个必须使用executeQuery()
的select语句,你就无法将它放在结果集的对象中。 / p>