取插入前最后记录ID+1,或者再访问数据库取最后一条记录的ID,是不是太笨了点?

解决方案 »

  1.   

    select max(id) from table;
      

  2.   

    好像只能select max(id) from table
      

  3.   

    sequence?
    我记得mysql好像不支持
      

  4.   

    mysql确实有个自增类型。
    你看它的文档,应该有地方说明的。
    不过我是用手动方式获取ID的。
    或者这样,先插入一条空记录,取回ID,再更新内容。
      

  5.   

    看什么数据库,具体情况可具体处理
    对于sqlsever2000
    可如此做:  表  table1String sql="SELECT IDENT_CURRENT('table1') AS 'Identity'";
               ResultSet rs= conn.executeQuery(sql);
               rs.absolute(1);
               int youwant = rs.getInt(1);
      

  6.   

    很简单的呀,如果是使用mysql的话!
    例如:
    sql="select ID from test order by ID desc limit 0,1"
    这样就可以取出来刚刚写入的那一条记录了呀????(limit 0,1是mysql独有的,表示,从第0位开始,取1个记录)
      

  7.   

    另外, kk_wyx(桃花岛) 所说的方法,在任何的数据库里都能用,不只是sqlserver比如,在mysql中sql="select count(*) as abc from test"
    Conn.queryRS(conn,sql)
    rs.getInt(abc)
    就可以了
      

  8.   

    哦? select语句是怎样保证读出的一定是我刚刚插入的那条记录呢? 如果在我刚刚插入记录的时候,有另一个人也插入了一条记录,谁能保证,我读出的那条,不是别人刚刚插入的那条呢?
    limit只是有助于分页这类的功能,好象和我要求的功能关系不大....
      

  9.   

    在Jive中有一个多态的应用,处理自动增长字段,很好,我现在就是这样用的!
      

  10.   

    to  telescope(望远镜) 这个问题我也遇上过头大了好几天不过我现在做的是在这个方法中用了单线程做的,在这个方法中select max(.)来取的刚刚插入的记录的
      

  11.   

    yingyeqi(风中男孩) select count(*)的方法肯定不行,难道你的数据从来都不进行删除操作?
    删除一条记录后,你的方法立即出错!!
    我现在用的就是楼上的方法,单机上做没问题,用户少时多数情况下也是正确的,但用户多,同时进行的操作比较多时就危险了!!!
    Java怎么会出这么大的漏洞??
      

  12.   

    用 SELECT MAX,插入方法用同步方法来做,即在插入函数前或语句块前用synchronized
      

  13.   

    一条插入的SQL语句是没有办法做到的!为了在不同数据库间移植我建议你不要使用自动增长字段,而改用自己管理的方式!
      

  14.   

    jdk1.4中的jdbc statement对象可以返回自动产生的值
      

  15.   

    to zhxx([email protected]
    怎样取得这个返回值,举例示意一下行吗?