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();
                }
            
        }
        
    }
    

 

转载于:https://www.cnblogs.com/fengdashen/p/5077015.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值