1 package org.day02;
2
3 import java.sql.Connection;
4 import java.sql.Date;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.sql.Statement;
9
10 import org.day01.ConnectionUtils;
11
12 public class TestPK {
13 /**
14 * for Oracle
15 *
16 * @throws SQLException
17 */
18 public void addOrder1() throws SQLException {
19 Connection con = null;
20 PreparedStatement stmt = null;
21
22 try {
23 con = ConnectionUtils.getConnection();
24 con.setAutoCommit(false);
25 // 获取ID
26 stmt = con.prepareStatement("select my_order_seq.nextval from dual");
27 ResultSet rs = stmt.executeQuery();
28 rs.next();
29 int orderId = rs.getInt(1);
30 System.out.println(orderId);
31 stmt.close();
32
33 // 插入Order
34 stmt = con.prepareStatement("insert into my_order values(?,?)");
35 stmt.setInt(1, orderId);
36 stmt.setDate(2, new Date(System.currentTimeMillis()));
37 stmt.executeUpdate();
38 stmt.close();
39
40 // 插入2个Item
41 stmt = con
42 .prepareStatement("insert into my_item values(my_item_seq.nextval,?,?)");
43
44 stmt.setString(1, "java");
45 stmt.setInt(2, orderId);
46 stmt.executeUpdate();
47
48 stmt.setString(1, "php");
49 stmt.setInt(2, orderId);
50 stmt.executeUpdate();
51 stmt.close();
52
53 con.commit();
54
55 } catch (SQLException e) {
56 e.printStackTrace();
57 con.rollback();
58 throw e;
59 } finally {
60 if (con != null) {
61 con.close();
62 }
63 }
64 }
65
66 /**
67 * for MySQL
68 *
69 * @throws SQLException
70 */
71 public void addOrder2() throws SQLException {
72 Connection con = null;
73 PreparedStatement stmt = null;
74
75 try {
76 con = ConnectionUtils.getConnection();
77 con.setAutoCommit(false);
78
79 // 插入Order
80 stmt = con.prepareStatement("insert into my_order values(null,?)",
81 Statement.RETURN_GENERATED_KEYS);
82 stmt.setDate(1, new Date(System.currentTimeMillis()));
83 stmt.executeUpdate();
84
85 ResultSet rs = stmt.getGeneratedKeys();
86 rs.next();
87 int orderId = rs.getInt(1);
88 System.out.println(orderId);
89 stmt.close();
90
91 // 插入2个Item
92 stmt = con.prepareStatement("insert into my_item values(null,?,?)");
93
94 stmt.setString(1, "java");
95 stmt.setInt(2, orderId);
96 stmt.executeUpdate();
97
98 stmt.setString(1, "php");
99 stmt.setInt(2, orderId);
100 stmt.executeUpdate();
101 stmt.close();
102
103 con.commit();
104
105 } catch (SQLException e) {
106 e.printStackTrace();
107 con.rollback();
108 throw e;
109 } finally {
110 if (con != null) {
111 con.close();
112 }
113 }
114 }
115
116 public static void main(String[] args) throws Exception {
117 TestPK pk = new TestPK();
118 pk.addOrder2();
119 }
120 }