使用PreparedStatement的getGeneratedKeys()无法在Java中找到生
发布时间:2020-12-14 05:33:56 所属栏目:Java 来源:网络整理
导读:我有一个查询如下: String SQL = "insert into table (id,name) values (sequence.nextval,?)"; 然后我像这样制作一个PreparedStatement: //initiate connection,statement etcpStatement = connection.prepareStatement(SQL,Statement.RETURN_GENERATED_K
我有一个查询如下:
String SQL = "insert into table (id,name) values (sequence.nextval,?)"; 然后我像这样制作一个PreparedStatement: //initiate connection,statement etc pStatement = connection.prepareStatement(SQL,Statement.RETURN_GENERATED_KEYS); pStatement.setString(1,'blabla'); pStatement.executeUpdate(); ResultSet rs = pStatement.getGeneratedKeys(); while (rs.next()){ //debugging here to see what rs has } 在该调试点执行和调试时,我看到我的ResultSet只有一个键,一个字符串 – 不像我期望的id.检查数据库时一切正常,id插入和一切. getGeneratedKeys()有一些东西; 我究竟做错了什么? 提前致谢 解决方法
我希望你回来的看起来像字符串的“密钥”是ROWID–这是数据库直接生成的唯一密钥.您应该能够更改它以获取您的id列(这可能需要适度的最新版本的JDBC驱动程序).
//initiate connection,statement etc String generatedColumns[] = {"ID"}; pStatement = connection.prepareStatement(SQL,generatedColumns); pStatement.setString(1,'blabla'); pStatement.executeUpdate(); ResultSet rs = pStatement.getGeneratedKeys(); while (rs.next()){ //debugging here to see what rs has } 您还可以更改查询以显式添加RETURNING子句 String SQL = "insert into table (id,name) " + " values (sequence.nextval,?) " + " returning id into ?"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |