获取数据库自动生成的键值(Statement与PreparedStatement)

我们常常将主键交给数据库去维护,例如我们在创建表的时候,让主键auto_increament。
这样一来在用户插入数据之后想获取到刚刚插入数据的ID,是没办法的,现在介绍下面两种方法获取数据库自动生成的键值。
若使用的是:Statement 代码如下

    public void demo12() {
        try {
            Connection connection = DBUtiles.getConnection();
            String sql = "insert into user(username,psw) values('hehe','haha')";
            Statement stmt = connection.createStatement();
            stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
            // 得到生成的键值
            ResultSet rs = stmt.getGeneratedKeys();
            while (rs.next()) {
                System.out.println(rs.getInt(1));
            }
        } catch (SQLException e) {
            // TODO A1uto-generated catch block
            e.printStackTrace();
        }
    }

例子是随便写的,也没有写关闭连接之类的。关键看这里:

stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
            // 得到生成的键值
            ResultSet rs = stmt.getGeneratedKeys();
            while (rs.next()) {
                System.out.println(rs.getInt(1));
            }

在执行的时候多加入一个参数:Statement.RETURN_GENERATED_KEYS
然后就可以通过stmt来拿到刚刚生成的键值了。

下面介绍PreparedStatement与statement是差不多的:
上代码:

public void demo13() {
        Connection connection;
        try {
            connection = DBUtiles.getConnection();
            String sql = "insert into user(username,psw) values(?,?)";
            PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            ps.setString(1, "haha");
            ps.setString(2, "hehe");
            ps.execute();
            ResultSet rs = ps.getGeneratedKeys();
//          ps.execute(sql);
            while (rs.next()) {
                System.out.println(rs.getInt(1));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

重点看这里:

PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
            ps.setString(1, "haha");
            ps.setString(2, "hehe");
            ps.execute();
            ResultSet rs = ps.getGeneratedKeys();
//          ps.execute(sql);
            while (rs.next()) {
                System.out.println(rs.getInt(1));
            }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值