11、JDBC 教程 - 获得插入数据的主键值

JDBC进阶

获得插入数据的主键值

获取数据库自动生成的主键值

在第6章的JDBCUtils的update()方法基础上进行的改进

下面介绍一下Connection类的.prepareStatement(sql)方法的重载方法prepareStatement(String sql, int autoGeneratedKeys)
参数1:还是原来的sql不变
参数2:是是否返回主键值的标志位

  • Statement.RETURN_GENERATED_KEYS:返回主键的ResultSet对象
  • Statement.NO_GENERATED_KEYS:不返回主键的ResultSet对象

这个ResultSet对象里只有一个列:GENERATED_KEY:用于存放新生成的主键值

public static int update(String sql, String path, Object ...args){
    int num = 0;
    getConnection(path);
    // 如果创建连接失败,返回0行
    if(con == null){
        System.out.println("创建数据库连接失败");
        return 0;
    }
    try {
        // 通过connection的createStatement()方法获取statement链接
        // ps = con.prepareStatement(sql);
        ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        for(int i=0;i<args.length;i++){
            ps.setObject(i+1, args[i]);
        }
        // 通过statement的executeUpdate()方法执行SQL语句
        num =  ps.executeUpdate();
        // 这里是导出该添加的数据的主键值的ResultSet对象
        ResultSet rs1 = ps.getGeneratedKeys();
        while (rs1.next()){
            System.out.println(rs1.getObject(1));
        }
    } catch (SQLException e) {
        // 从连接中获取Statement异常
        e.printStackTrace();
    } finally {
        // 关闭statement和connection连接
        close();
    }
    return num;
}

结果:  
本章结束

回到目录

如果本文有错误或对本文有不理解的地方欢迎评论 _

如果本文有帮助到您,可以点一下右上角的赞哦,谢谢啦