注意:我是初学者,我的同事说插入记录后,取自增列很麻烦,他不建议我用自增列,但我看了一下java文档,好象java支持insert数据后马上返回自增列的值.
请问java 是否支持我说的这个功能呢? 
如果有这个功能, 是否对所有数据库都支持?最好能给些代码,谢谢!

解决方案 »

  1.   

    好象java支持insert数据后马上返回自增列的值.
    学习~~
      

  2.   

    用存储过程可以吧,但在java语句里面还要注册一个得到返回值的变量
      

  3.   

    自增的,select max就可以了
      

  4.   

    insert into TEST Default Values
    select Scope_Identity()
      

  5.   

    LZ估计不是这个意思~~
    LZ的意思是"insert数据后马上返回自增列的值.",并不是用select 实现
      

  6.   

    JDBC 3.0可以实现。需要在语句的 execute() 方法中指定一个可选的标记,Statement.RETURN_GENERATED_KEYS和Statement.NO_GENERATED_KEYS。
    通过Statement 的实例方法 getGeneratedKeys() 来检索 ResultSet 而获得。ResultSet 包含了每个所产生的关键字的列。参考下面代码: 
      Statement stmt = conn.createStatement(); 
      stmt.executeUpdate("INSERT INTO authors (first_name, last_name) valueS (′George′, ′Orwell′)",Statement.RETURN_GENERATED_KEYS); 
      ResultSet rs = stmt.getGeneratedKeys(); 
      if ( rs.next() ) { 
       int key = rs.getInt(); 
      } 
      

  7.   

    LZ估计不是这个意思~~
    LZ的意思是"insert数据后马上返回自增列的值.",并不是用select 实现
    =====================================
    这位兄弟说的对. 如果要用select 就没意义了.
      

  8.   

    to journay(当你凝视黑夜时,黑夜也在深深的凝视着你) 
    ============
    你的方法我试过了,我用的是access数据库,java提示我说不支持. 郁闷. 
    请问如何知道我的JDBC版本??
      

  9.   

    看你应用的jdbc包啊,网上找找有没有支持Access 的
      

  10.   

    用批处理:
    String sql1="declare @id numeric(9) ";
    String sql2 = "insert into table "
    String sql3="select @id =@@identity";
    //"@con_id"可以直接用就是查询出的自增例的值.
    String sql4="select * from table where id =@id ";stmt.addBatch(0,sql1);
    stmt.addBatch(1,sql2);
    stmt.addBatch(2,sql3);
    stmt.addBatch(3,sql4);
    stmt.executeBatch():
      

  11.   

    用批处理:
    String sql1="declare @id numeric(9) ";
    String sql2 = "insert into table "
    String sql3="select @id =@@identity";
    //"@con_id"可以直接用就是查询出的自增例的值.
    String sql4="select * from table where id =@id ";stmt.addBatch(sql1);
    stmt.addBatch(sql2);
    stmt.addBatch(sql3);
    stmt.addBatch(sql4);
    stmt.executeBatch():
      

  12.   

    触发器和存储过程相结合
    触发器没有输入参数没有返回值,但是可以在触发器中调用存储过程,让存储过程返回.
    触发器设置为在Insert并且Update后触发.
      

  13.   

    触发器没有输入参数没有返回值,但是可以在触发器中调用存储过程,让存储过程返回.
    ==================================================
    好,但问题是我java如何取得SP的返回值? 要知道这个sp是在触发器中调用的,并不是java调用,所以我想不到有什么方法可以取得返回值.
      

  14.   

    暂时没有直接解决的办法.用以下方法不支持access.
    JDBC 3.0可以实现。需要在语句的 execute() 方法中指定一个可选的标记,Statement.RETURN_GENERATED_KEYS和Statement.NO_GENERATED_KEYS。