获取数据库自动生成的键值(Statement与PreparedStatement)
来源:互联网 发布:软件和信息技术服务业 编辑:程序博客网 时间:2024/06/07 13:56
我们常常将主键交给数据库去维护,例如我们在创建表的时候,让主键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 0
- 获取数据库自动生成的键值(Statement与PreparedStatement)
- 数据库JDBC查询,PreparedStatement与Statement的区别
- Statement与PreparedStatement的区别
- Statement与PreparedStatement的区别
- PreparedStatement与Statement的区别
- PreparedStatement 与 Statement 的区别
- PreparedStatement与statement的区别
- 无聊的statement 与 preparedstatement
- PreparedStatement与Statement的选择
- PreparedStatement与statement的区别
- Statement 与PreparedStatement的区别
- Statement与PreparedStatement的区别
- PreparedStatement与Statement的区别
- PreparedStatement与Statement的区别
- PreparedStatement与Statement的区别
- Statement与PreparedStatement的区别
- Statement与PreparedStatement的区别
- Statement与PreparedStatement的区别
- Linux服务器禁止其他主机ping
- Server Tomcat v7.0 Server at localhost failed to start.的问题解决办法
- java Native Method初涉
- Linux如何查看进程、杀死进程、启动进程等常用命令
- Spring Boot整合MyBatis和Druid
- 获取数据库自动生成的键值(Statement与PreparedStatement)
- Material Design系列文章(SnakeBar学习笔记)
- 父子组件通信-$emit
- 二叉树的下一个节点
- 《React Native高效开发》之styled-components
- React Native——Component(组件)
- Retrofit2完全解析(二)
- javaWeb文件下载
- 精通比特币