JDBC获得oracle数据库主键值

 

在实际的应用过程中 会出现一些业务需求 插入一条记录 获得其主键值 也就是oracle中的序列

在JdbcTemplate 模板类中 可以定义一个方法 执行插入数据(insert)语句 之后 返回主键值

 

public class JdbcTemplate {

 private Connection conn; //连接对象

private PreparedStatement ps;//预编译语句对象

private ResultSet rs; //结果集对象

 

public int insertGetKey(String sql,Object[] par,String[] keyname){ 

//第一个参数 执行的sql语句,第二个参数sql语句需要的参数数组,第三个要查询的主键值的列名数组
try {
conn=DBUtil.getConnection(); //获得连接对象
ps=conn.prepareStatement(sql,keyname);

//第一个参数sql语句 第二个string数组中存放要获取主键值的列名

if(par!=null){  //sql参数数组不为null
    for(int i=0;i<par.length;i++){          
    if(par[i] instanceof Date){              
     Date d=(Date)par[i];  
   ps.setTimestamp(i+1, new Timestamp(d.getTime()));  //日期类型特殊 处理
  }else{
   ps.setObject(i+1, par[i]);   //设置参数
      }
   }
}
ps.executeUpdate(); //执行sql语句
rs=ps.getGeneratedKeys(); //返回主键值的结果集


if(rs.next()){
return rs.getInt(1);  //返回主键值
}


} catch (SQLException e) {
e.printStackTrace(); //异常处理
   }finally{
DBUtil.close(conn, rs, ps); //释放资源
   }
return 0;
 }

 }

 

 

 

 

posted @ 2019-02-13 16:20  沙漠里的橘子皮  阅读(1045)  评论(0编辑  收藏  举报