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

  1. public void OrderInsert(){
  2. Connection conn = null;
  3. PreparedStatement pstmt = null;
  4. ResultSet rs = null;
  5.  
  6. try {
  7.  
  8. conn = DBUtils.getConnection();
  9. //事务开始
  10. conn.setAutoCommit(false);
  11. //业务逻辑
  12. //插入订单表,谁,什么时间
  13. //插入订单明细表,上一步生产的订单号
  14. //插入商品明细,商品单价
  15. pstmt = conn.prepareStatement(INSERT_ORDER,
  16. new String[]{"id"});//获取主键名称
  17.  
  18. pstmt.setString(1, "威震天");
  19. pstmt.setTimestamp(2,new java.sql.Timestamp(System.currentTimeMillis()));
  20. pstmt.executeUpdate();
  21. //获取ID值
  22. rs= pstmt.getGeneratedKeys();
  23. int orderId =0 ;
  24. if(rs.next()){
  25. orderId = rs.getInt(1);
  26. }
  27. System.out.println("order id:"+orderId);
  28.  
  29. //事物2:
  30. pstmt = conn.prepareStatement(INSERT_DETIAL);
  31. pstmt.setInt(1, orderId);
  32. pstmt.setString(2, "Cube");
  33. pstmt.setInt(3, 10);
  34. pstmt.setDouble(4, 5000);
  35. pstmt.executeUpdate();
  36. System.out.println("订单明细已插入");
  37.  
  38. conn.commit();
  39.  
  40. } catch (Exception e) {
  41. try {
  42. conn.rollback();
  43. } catch (SQLException sqkex) {
  44. // TODO Auto-generated catch block
  45. sqkex.printStackTrace();
  46. }
  47. e.printStackTrace();
  48.  
  49. }finally {
  50. try {
  51. conn.setAutoCommit(true);
  52. if(conn !=null) conn.close();
  53. } catch (SQLException e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57.  
  58. }
  59.  
  60. }

JDBC获取表的主键的更多相关文章

  1. Oracle 获取表的主键、外键以及唯一约束条件

    Oracle 获取表的主键.外键以及唯一约束条件 Select a.Owner 主键拥有者, a.table_name 主键表, b.Column_Name 主键列, b.Constraint_Nam ...

  2. 如何使用sqlalchemy获取表的主键、以及每一个字段名和对应类型

    使用sqlalchemy获取到的结果只包含数据,不包含字段,那么我们如何获取到对应字段和其属性呢?以及如何获取某张表的主键呢? # -*- coding:utf-8 -*- # @Author: Wa ...

  3. (十八)JDBC获取存储过程和主键

    目录 获取数据库自动生成的主键: JDBC调用存储过程 获取数据库自动生成的主键: update 更新操作以后,如果需要用到结果集,可以通过 PreparedStatement.getResultSe ...

  4. mybatis执行insert后马上能获取自增主键的语句写法

    <!--keyColumn keyProperty useGeneratedKeys 用于在插入数据后,能直接使用user.getId()获取主键--> <insert id=&qu ...

  5. 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类

    http://www.cnblogs.com/lbangel/p/3487796.html 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的 ...

  6. 两种获取MySql数据库中所有表的主键和外键约束信息的Sql语句

    最近在写Rafy底层的一些东西,在数据库方面把MySql数据库集成到里面去,里面有一个需求,需要获取非系统数据库,也就是我们自己建立的数据库中所有表的主键和外键元数据列表. 第一种方法:是网上的方法, ...

  7. mybatis 添加事物后 无法获取自增主键的问题

    检查代码后没发现mapper文件设置自增主键返回的问题,后来检查到,关闭事务后,执行完是可以获取返回的主键的, 我在mysql的客户端里关闭自动提交,发现使用select last_insert_id ...

  8. MYSQL获取自增主键【4种方法】

    通常我们在应用中对mysql执行了insert操作后,需要获取插入记录的自增主键.本文将介绍java环境下的4种方法获取insert后的记录主键auto_increment的值: 通过JDBC2.0提 ...

  9. mybatis框架(6)---mybatis插入数据后获取自增主键

    mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...

随机推荐

  1. 套题T2

    数学(math.cpp) DXY的数学很差... 对于所有1<=i<=N求(2^i – i^2)能被7整除的个数.(N<=1000000) 样例输入: 3 样例输出: 1 你在代码中 ...

  2. lintcode: 三数之和II

    题目 三数之和 II 给一个包含n个整数的数组S, 找到和与给定整数target最接近的三元组,返回这三个数的和. 样例 例如S = .  和最接近1的三元组是 -1 + 2 + 1 = 2. 注意 ...

  3. unity3d泰斗破坏神2----课程列表

    免费 课时1:泰斗破坏神第一支预告视频 01:32免费 课时2:泰斗破坏神第二支预告视频 01:58第 1 章 : 游戏开始 用户登录 服务器选择课时3:游戏开始 用户登录 服务器选择课时4:素材介绍 ...

  4. SpringMVC学习总结(四)——基于注解的SpringMVC简单介绍

    SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request ...

  5. jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明

    http://m.blog.csdn.net/blog/eyebrother/36007145 所以当后台通过request.getParameter("name");对参数值的作 ...

  6. HTML5入门3---视频播放器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...

  7. java中文排序

    对中文名称进行排序,不多说,上代码 package test; /** * @Title: Person.java * @Copyright: Copyright (c) 2012-11-19 * @ ...

  8. windows和linux共享文件

    一篇文章: 环境:主机操作系统 是Windows XP ,虚拟机 是Ubuntu 9.10,虚拟机是VirtualBox 3.08. 1. 安装增强功能包(Guest Additions) 安装好Ub ...

  9. 车牌识别LPR(四)-- 车牌定位

    第四篇:车牌定位 车牌定位就是采用一系列图像处理或者数学的方法从一幅图像中将车牌准确地定位出来.车牌定位提取出的车牌是整个车牌识别系统的数据来源,它的效果的好坏直接影响到整个系统的表现,只有准确地定位 ...

  10. 构建linux内核源码树

    编写驱动程序时,需要内核源码树的支持.内核源码树时从内核源代码编译得到的.下面开始构造内核源代码的步骤.以Ubuntu为例子 1. 下载内源代码,位置www.kernel.org. (注意:源码树内核 ...