gpt4 book ai didi

java - PreparedStatement.executeBatch() 之后的 getGeneratedKeys()

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:53 25 4
gpt4 key购买 nike

我想使用 PreparedStatement INSERT 几行:

ps = con.prepareStatement(query,PreparedStatement.RETURN_GENERATED_KEYS);

for(Element e:listOfElements){
ps.setString(1,this.col_val_1);
ps.setString(2,this.col_val_2);
ps.setInt(3,this.col_val_3);

ps.addBatch();
}

ps.executeBatch();
ResultSet rs = ps.getGeneratedKeys();

此时,当我希望为每个 INSERT 生成 PK 时,我得到了这个 SQLServerException:

com.microsoft.sqlserver.jdbc.SQLServerException: The statement must be executed before any results can be obtained.

我希望得到一个 ResultSet,每个执行的插入都有一行,这样我就可以生成每个 PK。

我的预期错了吗?难道我做错了什么?可以使用批处理以不同的方式完成吗?

最佳答案

对批处理执行的 getGeneratedKeys() 的支持是根据 JDBC 规范定义的实现。 SQL Server 驱动程序很可能不支持它进行批处理。

我试图在 Microsoft 站点上查找明确的声明,但找不到。 MSDN 上的这个旧 (2007) 论坛帖子确实声明它不受支持:http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/6cbf5eea-e5b9-4519-8e86-f4b65ce3f8e1

关于java - PreparedStatement.executeBatch() 之后的 getGeneratedKeys(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641832/

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