没有来自PreparedStatement查询的返回数据

时间:2012-10-28 18:06:00

标签: java prepared-statement

我正在尝试使用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。

2 个答案:

答案 0 :(得分:2)

啊,所以我终于找到了这个问题的答案 - 以防其他人被困在同一件事上..

execute()方法没有返回值,尽管编译器建议它期望一个布尔返回值。也许它只是为了成功而返回true或false?

executeUpdate()方法返回更新/插入或删除的记录数的int值。

要获取查询语句的结果集(例如,从someTable中选择*),请使用 ResultSet rs = preparedStatement.executeQuery()方法。 这会将实际查询结果返回到ResultSet变量。

答案 1 :(得分:2)

execute()函数返回一个布尔值,因此如果你想执行一个必须使用executeQuery()的select语句,你就无法将它放在结果集的对象中。 / p>