gpt4 book ai didi

java - 无法使用 PreparedStatement 的 getGeneratedKeys() 在 Java 中找到生成的 key

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:23 29 4
gpt4 key购买 nike

我有一个查询如下:

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(); 有点问题这让我很困惑。

我做错了什么?

提前致谢

最佳答案

我希望您返回的看起来像字符串的“ key ”是 ROWID -- 这是数据库直接生成的唯一 key 。您应该能够更改它以恢复您的 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 ?";

关于java - 无法使用 PreparedStatement 的 getGeneratedKeys() 在 Java 中找到生成的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9998781/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com