gpt4 book ai didi

java - 使用 PreparedStatement.RETURN_GENERATED_KEYS 时出现 SQLException

转载 作者:行者123 更新时间:2023-11-30 11:47:39 32 4
gpt4 key购买 nike

这是有问题的代码块:

String sq = "INSERT INTO survey (session_id, character_id, timestamp) VALUES (?,?,?)";
PreparedStatement sadd = conn.prepareStatement(sq, PreparedStatement.RETURN_GENERATED_KEYS);
sadd.setLong(1, sessionId);
sadd.setLong(2, character_id);
sadd.setString(3, dateTime);
int affectedrows = sadd.executeUpdate();

//get the ID
long resultId = 0;
ResultSet key = sadd.getGeneratedKeys();
if (key.next()) {
resultId = key.getLong(1);
}

这个查询在没有 PreparedStatement.RETURN_GENERATED_KEYS 选项的情况下工作正常,但是当我突然添加它时 executeUpdate() 抛出异常:

com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.

如果我取出 PreparedStatement.RETURN_GENERATED_KEYS,它会再次正常工作。出于沮丧,我将 executeUpdate() 更改为 executeQuery() 只是为了看看我是否可以取回 key 并得到一个异常,它无法获取 key ,因为语句必须先执行。

如何获取生成的 key ?我正在使用 SQL Server 2008 和最新的 JDBC 驱动程序。

最佳答案

在我看来像是驱动程序错误。

您应该从这里尝试更新的 4.0 驱动程序 -> http://www.microsoft.com/download/en/details.aspx?id=11774

如果这不起作用,一种解决方法是创建一个“插入”存储过程并将生成的 ID 作为存储过程输出参数返回。

关于java - 使用 PreparedStatement.RETURN_GENERATED_KEYS 时出现 SQLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218333/

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