请教高手,我在用jsp操作数据库插入一条数据到数据库是怎样返回新插入列的主键Id?

解决方案 »

  1.   

    给段代码例子你看看合适不String sql = "insert into article values (null, ?, ?, ?, ?, now() ,?);";
    PreparedStatement pstmt = DB.prepareStatement(conn, sql,Statement.RETURN_GENERATED_KEYS);
    //statment.return_return_generated_keys是使pstmt执行中保存自动生成的字段.
    pstmt.setInt(1,0);
    pstmt.setInt(2,rootId);
    pstmt.setString(3,title);
    pstmt.setString(4,content);
    pstmt.setInt(5,0);
    pstmt.executeUpdate();

    ResultSet rs = pstmt.getGeneratedKeys();//得到自动生成的id集;
    rs.next();
    rootId = rs.getInt(1);

    Statement stmt = DB.createStmt(conn);
    stmt.executeUpdate("update article set rootid = " + rootId + " where id=" + rootId);
      

  2.   

    你的ID不是自动增长的吗?如果是主键的话,你添加的时候可以把ID那一列空出来。
      

  3.   

    这条语句后面跟一个。
    select   @@identity
      

  4.   

    两种方法:
    第一种,在插入之前查询出之前最大的ID,然后在插入之后在最开始获取到的ID上加1
    第二种,在插入之后再查询出最大的ID
    以上两种方法都要求ID是自增的
      

  5.   

    非常感谢各位的支持,特别是kirkjason完全帮我解决了此问题,非常感谢!
      

  6.   

    我们要慎用@@IDENTITY,原因是 @@IDENTITY 它总是获取最后一条变更数据的自增字段的值,
    而忽略了进行变更操作所在的范围约束。SCOPE_IDENTITY() 查一下这个帮助吧。