比方调用一个写好的插入类,调用完后需要返回插入记录的id值,这个id是自动增长列.怎么样才能插入记录后就能取出id??

解决方案 »

  1.   

    select id from table where ziduan='"+ziduan+"'
      

  2.   

    select max(id) as id from t
      

  3.   

    有几种方法,其实最好的是:Statement   stmt   =   conn.createStatement();   
      //   Obtain   the   generated   key   that   results   from   the   query.   
      stmt.executeUpdate("INSERT   INTO   authors   "   +   
                                            "(first_name,   last_name)   "   +   
                                            "VALUES   ('George',   'Orwell')",   
                                            Statement.RETURN_GENERATED_KEYS);   
      ResultSet   rs   =   stmt.getGeneratedKeys();   
      if   (   rs.next()   )   {   
              //   Retrieve   the   auto   generated   key(s).   
              int   key   =   rs.getInt(1);   
      }   这样的代码,不过这样的代码如果想正常的运行,必须运行在JDBC 3.0的版本下,,这意味着你使用的JDBC的JAR包驱动必须要支持到JDBC3.0的,你可以查看相关的官方文档,看是否支持。。还有另外一种是使用最简单的SQL语句了:
    select max(id) from yourTableName
    类似这样的语句了,你max(id)之前必须要提交事务,确保记录已经插入到DB中。还有另外一种办法就是把这个代码放到存储过程中了,原理是一样。
      

  4.   

    ibatis,hibernate等框架可以在插入的同时返回id
    select max(id) from yourTableName 也可以但必须用事物控制
      

  5.   

    取最大值不能满足我现在的业务,因为这个id和其他表有关联,也就是说3个表id关联,前2个表关联可以用最大值,但是到第三个表的时候再取最大值就不一定了,这个不是一个操作,需要多步完成,到第三步查出id前有可能已经再次插入数据
      

  6.   

    select max(id) from yourTableName 
    有一定的可能会不对,比如说你刚插入完一条数据,事务也提交,这时候,另外一个马上去插入数据,插入完之后你再去取.就会得不到这正确的结果,要么像四楼所说的一样.要么就得用到唯一键去查询了.
    比如说用户这一块,用户名应该是唯一的,你就可以用这个用户去查询它的ID.其它的也一样.
    既然是关联的,你可以把几个表关联起来一起查询第三个表的ID呀.
      

  7.   

    可以调用数据库的内置函数比如mysql:last_insert()