现有系统环境java+sqlserver2000 jdbc2.0现在有个系统要集成进来,是sqlserver2005的,要在2005数据库中增加记录并用到自动获取自增主键值。
              String sql ="insert tb(..)values() ";              Class.forName(driver).newInstance();
connection = DriverManager.getConnection(url, user, password);
Statement stmt = connection.createStatement();

stmt.execute(sql);
//这个在jdbc3.0下应该没问题,但用jdbc2.0不行
              stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);如何用jdbc2.0的方法,在sqlserver2005中插入数据时,自动获取插入后自增主键的值呢?谢谢!

解决方案 »

  1.   

    ResultSet rs = pstmt.getGeneratedKeys(); 
      

  2.   

    楼上兄弟,jdbc2.0好像不支持这种方法,我的代码中用的就是这种办法,提示
    java.lang.AbstractMethodError:   com.microsoft.jdbc.base.BaseStatement.executeUpdate(Ljava/lang/String;I)I 是sqlserver版本和驱动的问题,我是想能不能在jdbc2.0的驱动下获取sqlserver2005的自增主键值??
      

  3.   

    在这个事务里加入一条查询
    select @@identity
      

  4.   

    对sqlserver还不太了解,
    select @@identity是放入sql插入语句的后面吗? 这样用executeQuery()还是executeUpdate()??
    又该如何获取该值呢?
      

  5.   

    String sql ="insert into tb(f)values('v') select SCOPE_IDENTITY()";
    ResultSet rs = stmt.executeQuery(sql);   
      int keyValue = -1;   
      if (rs.next()) {   
       keyValue = rs.getInt(1);   
        }  
    这是解决办法,谢谢各位大虾!