zoukankan      html  css  js  c++  java
  • JDBC通过getGeneratedKeys()获取主键的方法

    我们在插入某一条sql信息的同时,如果还需要获取对应的主键ID,就可以使用getGeneratedKeys()来获取主键ID

    代码如下:这里是明确知道只插入一条的情况

    public long insert(String sql, Object... args) {
        long id=0;
        Connection connection=null;
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        try {
            connection=JDBCUtils.getConnection();
            preparedStatement=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            if(args!=null){
                for(int i=0;i<args.length;i++){
                    preparedStatement.setObject(i+1, args[i]);
                }
            }
            preparedStatement.executeUpdate();
            //获取生产的主键值
            resultSet=preparedStatement.getGeneratedKeys();//获取主键值
            
            if(resultSet.next()){
                id=resultSet.getLong(1);// getLong(1)是指获取第一列的值(一般第一列都为主键id)   所以id=它
            }
            System.out.println("产生的id"+id);
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            JDBCUtils.release(resultSet, preparedStatement);
            JDBCUtils.release(connection);
        }
            return id;
        }

    如果是批量插入,就要用while循环,if条件就不能实现批量插入,因为要获取多条数据对象对应的主键ID,所以用while得以实现,resultSet是一个数据集   .next获取它的下一个指针(可以理解成下一行数据) 

    代码如下

    public long insert(String sql, Object... args) {
        long id=0;
        Connection connection=null;
        PreparedStatement preparedStatement=null;
        ResultSet resultSet=null;
        try {
            connection=JDBCUtils.getConnection();
            preparedStatement=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            if(args!=null){
                for(int i=0;i<args.length;i++){
                    preparedStatement.setObject(i+1, args[i]);
                }
            }
            preparedStatement.executeUpdate();
            //获取生产的主键值
            resultSet=preparedStatement.getGeneratedKeys();//获取主键值
            
            while(resultSet.next()){
                id=resultSet.getLong(1);// getLong(1)是指获取第一列的值(一般第一列都为主键id)   所以id=它
            }
            System.out.println("产生的id"+id);
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            JDBCUtils.release(resultSet, preparedStatement);
            JDBCUtils.release(connection);
        }
            return id;
        }
  • 相关阅读:
    module5-01-jQuery 基础
    module4-JavaScript 高级特性、ES6 新特性
    module4-05-ES6新特性
    module4-04-正则表达式
    module4-03-继承和函数进阶
    module4-02-面向对象编程案例 随机方块、贪吃蛇
    module4-01-面向对象编程、原型链、构造函数、原型对象
    module3-Web APIs 网页应用编程
    module3-05-定时器的应用-简单动画-无缝滚动-轮播图
    人生赢家从规划开始,先觉知、量己力、衡外情、重实践、善反省
  • 原文地址:https://www.cnblogs.com/wrkjwl/p/9237386.html
Copyright © 2011-2022 走看看