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;
}
结果:
本章结束
如果本文有错误或对本文有不理解的地方欢迎评论 _
如果本文有帮助到您,可以点一下右上角的赞哦,谢谢啦