尝试获取新插入行的ID时获取异常

时间:2013-12-09 07:24:48

标签: java sql-server-2008 jdbc

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

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语句。

我使用的是sqljdbc4 jar,SQL版本是SQL server 2008。 请帮助解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:0)

您正在使用:

int status=psmt.executeUpdate();

这实际上是普通的Select查询吗?

使用execute()executeQuery()

答案 1 :(得分:0)

将主键列名称作为参数传递给方法PrepareStatement

prepareStatement(String sql,String [] columnNames);

使用上面的语法来获得生成密钥

的预处理
    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); 
   }