JDBC获取表的主键

JDBC获取表的主键

案例,创建订单,并根据订单号向订单明细表插入数据

sql语句:

创建两表

create table orders(
  id number(4) primary key,
  customer varchar2(20) not null,
  orderdate date default sysdate
);


create table orderDetails(
  id number(4) primary key,
  order_id number(4),
  product varchar2(50) not null,
  count number(4) not null,
  unitprice number(7,2)
);

这里核心是要使得订单的主键id = order_id

 

    
    public void OrderInsert(){
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        
        try {
            
            conn = DBUtils.getConnection();
            //事务开始
            conn.setAutoCommit(false);
            //业务逻辑
            //插入订单表,谁,什么时间
            //插入订单明细表,上一步生产的订单号
            //插入商品明细,商品单价
            pstmt = conn.prepareStatement(INSERT_ORDER,
                                          new String[]{"id"});//获取主键名称
            
            pstmt.setString(1, "威震天");
            pstmt.setTimestamp(2,new java.sql.Timestamp(System.currentTimeMillis()));
            pstmt.executeUpdate();
            //获取ID值
            rs= pstmt.getGeneratedKeys();
            int orderId =0 ;
            if(rs.next()){
                orderId = rs.getInt(1);
            }
            System.out.println("order id:"+orderId);
            
            //事物2:
            pstmt = conn.prepareStatement(INSERT_DETIAL);
            pstmt.setInt(1, orderId);
            pstmt.setString(2, "Cube");
            pstmt.setInt(3, 10);
            pstmt.setDouble(4, 5000);
            pstmt.executeUpdate();
            System.out.println("订单明细已插入");
            
            
            
            conn.commit();
            
        } catch (Exception e) {
            try {
                conn.rollback();
            } catch (SQLException sqkex) {
                // TODO Auto-generated catch block
                sqkex.printStackTrace();
            }
            e.printStackTrace();
            
        }finally {
            try {
                conn.setAutoCommit(true);
                if(conn !=null)  conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
        }
        
    }
    

 

posted @ 2015-12-25 21:10  跨七海的风  阅读(977)  评论(0编辑  收藏  举报