JAVA笔记——JDBC获取存储过程和主键

本文介绍了如何使用Java的JDBC来获取数据库执行插入操作后自动生成的主键,主要通过PreparedStatement的getGeneratedKeys()方法实现。同时,文章也讲解了调用存储过程的方法,强调需创建CallableStatement对象并设置参数,以调用数据库中的存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取数据库自动生成的主键:
update 更新操作以后,如果需要用到结果集,可以通过 PreparedStatement.getResultSet()方法获得结果集;

getGeneratedKeys(); 获取执行完插入语句后自动生成的键,结果封装在一个结果集里面;

PreparedStatement 对象,进行预编译的时候,可以接受2个参数,第二个参数表示是自动获得自动生成的键。

获得的结果,封装在一个 结果集 里面。然后调用 PreparedStatement.getGeneratedKeys(); 拿到这个结果集 ;

代码演示:
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;

    try {
        connection = JdbcUtils.getConnection();
        String sql = "INSERT INTO testBlob(image) VALUES(?)";
        // 接受2个参数,第二个参数,是否自动获得自动生成的键
      Statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        File file = new File("src/ijava/xin/images/th2.jpg");
        InputStream inputStream = new FileInputStream(file);

        statement.setBinaryStream(1, inputStream);

        int num = statement.executeUpdate();

        if(num>0){
            //  获取 封装了自动生成的键的结果集 
            resultSet = statement.getGeneratedKeys() ;
            if (resultSet.next()){
                System.out.println(resultSet.getInt(1));
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        JdbcUtils.closedConnection(resultSet, statement, connection);

    }

上述的操作,仅对 insert 有效,毕竟只有插入操作,才会生成键 ;

JDBC调用存储过程:
存储过程就是相当于方法一样,只是这个方法是数据里面的方法,可以理解为数据库里面的处理数据的方法;

首先需要先获得 CallableStatement 对象 ,并调用存储过程, 设置参数注册返回值,得到输出;

CallableStatement cStmt = conn.prepareCall("{call demoSp(?,?)}") ; // 参数是存储过程的名字 ;

// 设置参数
cStmt.setString(1,"abcdef") ;

// 告诉mysql,存储过程的第二个参数是字符串
cStmt.registerOutParameter(2,Type.VARCHAR) ; 

// 执行存储过程

// 获取存储过程的返回结果
Sout(cStmt.getString(2)) ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值