Java 尝试获取新插入行的id时发生异常

Java 尝试获取新插入行的id时发生异常,java,sql-server-2008,jdbc,Java,Sql Server 2008,Jdbc,我正在尝试获取新插入记录的主键(这是一个标识字段) 代码片段如下所示 jdbcConnection=new JdbcConnection(); connection=jdbcConnection.getJdbcConnection(); psmt=connection.prepareStatement("{call spCopyRecord(?)}",Statement.RETURN_GENERATED_KEYS); psmt.setInt(1, primarykey); i

我正在尝试获取新插入记录的主键(这是一个标识字段) 代码片段如下所示

jdbcConnection=new JdbcConnection();
connection=jdbcConnection.getJdbcConnection();          
psmt=connection.prepareStatement("{call spCopyRecord(?)}",Statement.RETURN_GENERATED_KEYS);
psmt.setInt(1, primarykey);
int status=psmt.executeUpdate();

ResultSet generatedKeys=psmt.getGeneratedKeys();
if(generatedKeys != null &&generatedKeys.next()){
    newKey=generatedKeys.getInt(1);     
}
当我尝试执行时,会出现异常:

com.microsoft.sqlserver.jdbc.SQLServerException:已生成更新的结果集。 它指向executeUpdate语句

我使用的是SQLJDBC4JAR,SQL版本是SQLServer2008。 请帮助解决此问题。请提前感谢。

您正在使用:

int status=psmt.executeUpdate();
这不是一个普通的Select查询吗


使用或将主键列名作为参数传递给方法PrepareStatement

prepareStatement(字符串sql,字符串[]列名称)

使用上面的语法获取preparestatement,它提供生成的密钥

    jdbcConnection=new JdbcConnection();
    connection=jdbcConnection.getJdbcConnection();          
    psmt=connection.prepareStatement("INSERT QUERY",String[] UR_PRIMARY_KEY_COLUMN_NMAE);
    psmt.setInt(1, "params");
    int status=psmt.executeUpdate();

    ResultSet generatedKeys=psmt.getGeneratedKeys();
    while(generatedKeys.next())
   {
       String id = rs.getString(1); 
   }

我认为您需要的是
.executeQuery()
?我认为执行存储过程与
getGeneratedKeys()
结合使用是不受支持的……谢谢您的回复。我得到com.microsoft.sqlserver.jdbc.SQLServerException:必须先执行该语句,然后才能获得任何结果。对于execute()和executeQuery():(