使用jdbc获取插入数据时的主键的方法
2012-08-20 16:32
471 查看
package org.day02; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.day01.ConnectionUtils; public class TestPK { /** * for Oracle * * @throws SQLException */ public void addOrder1() throws SQLException { Connection con = null; PreparedStatement stmt = null; try { con = ConnectionUtils.getConnection(); con.setAutoCommit(false); // 获取ID stmt = con.prepareStatement("select my_order_seq.nextval from dual"); ResultSet rs = stmt.executeQuery(); rs.next(); int orderId = rs.getInt(1); System.out.println(orderId); stmt.close(); // 插入Order stmt = con.prepareStatement("insert into my_order values(?,?)"); stmt.setInt(1, orderId); stmt.setDate(2, new Date(System.currentTimeMillis())); stmt.executeUpdate(); stmt.close(); // 插入2个Item stmt = con .prepareStatement("insert into my_item values(my_item_seq.nextval,?,?)"); stmt.setString(1, "java"); stmt.setInt(2, orderId); stmt.executeUpdate(); stmt.setString(1, "php"); stmt.setInt(2, orderId); stmt.executeUpdate(); stmt.close(); con.commit(); } catch (SQLException e) { e.printStackTrace(); con.rollback(); throw e; } finally { if (con != null) { con.close(); } } } /** * for MySQL * * @throws SQLException */ public void addOrder2() throws SQLException { Connection con = null; PreparedStatement stmt = null; try { con = ConnectionUtils.getConnection(); con.setAutoCommit(false); // 插入Order stmt = con.prepareStatement("insert into my_order values(null,?)", Statement.RETURN_GENERATED_KEYS); stmt.setDate(1, new Date(System.currentTimeMillis())); stmt.executeUpdate(); ResultSet rs = stmt.getGeneratedKeys(); rs.next(); int orderId = rs.getInt(1); System.out.println(orderId); stmt.close(); // 插入2个Item stmt = con.prepareStatement("insert into my_item values(null,?,?)"); stmt.setString(1, "java"); stmt.setInt(2, orderId); stmt.executeUpdate(); stmt.setString(1, "php"); stmt.setInt(2, orderId); stmt.executeUpdate(); stmt.close(); con.commit(); } catch (SQLException e) { e.printStackTrace(); con.rollback(); throw e; } finally { if (con != null) { con.close(); } } } public static void main(String[] args) throws Exception { TestPK pk = new TestPK(); pk.addOrder2(); } }
相关文章推荐
- C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法
- mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- MyBatis使用注解方式插入数据后获取自增长的主键值
- JDBC 获取被插入数据的主键ID值
- Mybatis——【亲测】mybatis使用注解方式插入数据后获取自增长的主键值
- 使用mybatis的insert语句插入数据的时候,获取插入数据的主键id
- 【JDBC】向数据表插入数据时,自动获取生成的主键
- JAVA 向数据库中插入数据并获取主键的方法(逐渐补充)
- java获取使用mybatis刚插入数据的主键id
- 用jdbc向数据库插入数据后获取生成的主键值
- jdbc、Mybatis插入数据主键回显的实现方法
- 实体类中有主键,数据库中主键是自增的,使用linq插入记录时,由于实体类有数据产生报错的解决方法
- JDBC中sql插入数据得到主键的方法
- mybatis使用注解方式插入数据后获取自增长的主键值
- 使用JDBC插入多数据测试的3种实现方法
- 使用JDBC插入多数据测试的3种实现方法
- THINKPHP在添加数据的时候获取主键id的值方法
- C#使用DataAdapter.Update(dt)方法,无法批量插入数据的原因及解决
- PHP使用ajax跨域获取json数据的两种方法