在很多时候都会遇到和数据库的连接,当在向数据库的插入(PreparedStatement)有自动递增的字段时,可以调用PrepareStatement的一个方法prepareStatement(sql, Statement.RETURN_GENERATED_KEYS).下面是我做BBS时在发表新主题中的一段代码:
String sql = "insert into article values (null,0,-1,?,?,now(),0)"; boolean autoCommit = conn.getAutoCommit(); conn.setAutoCommit(false); PreparedStatement pstmt= conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); pstmt.setString(1,title); pstmt.setString(2,cont); pstmt.executeUpdate(); ResultSet rsKey = pstmt.getGeneratedKeys(); //拿到自动生成的key rsKey.next(); int id = rsKey.getInt(1); rsKey.close(); stmt.executeUpdate("update article set rootid = " + id + " where id = " + id); conn.commit(); conn.setAutoCommit(autoCommit);
这些都是跟着马士兵老师学习的时候他讲的。