PreparedStatement.executeQuery()不返回结果集

时间:2013-09-10 08:47:48

标签: java sql jdbc prepared-statement resultset

我正在使用preparedStatement来插入数据。我正在使用它的executeQuery()方法,它返回由Query创建的数据的resultSet。但我得到例外说你应该使用statement而不是preparedStatement 为什么?我该怎么做才能得到结果集?我想获取自动生成的最后插入记录的id 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

  

我正在使用preparedStatement来插入数据。我正在使用它的executeQuery()

如果您使用preparedStatement进行插入,则不应使用executeQuery()

使用executeUpdate()

注意 executeUpdate()返回int,如果你想检查是否插入,那么就这样做

if(executeUpdate()>0)

{
//do some thing
}
{
else
//do somethind
}

答案 1 :(得分:0)

您获得该异常是因为您正在准备插入(DML)查询

要检索自动生成的密钥,您应该使用以下连接方法

创建语句
PreparedStatement ps = connection.prepareStatement(myQuery,Statement.RETURN_GENERATED_KEYS );

ps.executeUpdate();

ResutSet rs = ps.getGeneratedKeys();
rs.first();
int generatedKey = rs.getInt(1);