生活随笔
收集整理的這篇文章主要介紹了
利用jdbc做一个购买的事务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有一個在線交易電商平臺,有兩張表,分別是庫存表和訂單表,如下:
現在買家XiaoMing在該平臺購買bag一個,需要同時在庫存表中對bag庫存記錄減一,同時在訂單表中生成該訂單的相關記錄。
請編寫Java程序,實現XiaoMing購買bag邏輯。訂單表ID字段為自增字段,無需賦值。
1 package chatroom;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.sql.Statement;
9
10 import javax.imageio.spi.IIOServiceProvider;
11
12 import org.apache.commons.dbcp2.BasicDataSource;
13
14 /**
15 * @author 神余健芝
16 * @date 創建時間:2017年5月20日 下午9:48:47
17 */
18 public class JDBCTest {
19 public static BasicDataSource ds =
null;
20
21 public final static String JDBC_DRIVER = "com.mysql.jdbc.Driver"
;
22 public final static String USER_NAME = "root"
;
23 public final static String PASSWORD = "123456"
;
24 public final static String DB_URL = "jdbc:mysql://localhost/shen_db?useUnicode=true&characterEncoding=utf-8&useSSL=false"
;
25
26 public static void dbcpInit() {
27 ds =
new BasicDataSource();
28 ds.setUrl(DB_URL);
29 ds.setDriverClassName(JDBC_DRIVER);
30 ds.setUsername(USER_NAME);
31 ds.setPassword(PASSWORD);
32 }
33
34 public static void tranferAccount()
throws ClassNotFoundException {
35 Connection connection =
null;
36 PreparedStatement preparedStatement1 =
null, preparedStatement2 =
null;
37
38 try {
39 connection =
ds.getConnection();
40 System.out.println(connection);
41 connection.setAutoCommit(
false);
42 preparedStatement1 = connection.prepareStatement("update inventory set Inventory= ? where ProductName= ?"
);
43 preparedStatement1.setInt(1, 19
);
44 preparedStatement1.setString(2, "bag"
);
45 preparedStatement1.execute();
46
47 preparedStatement2 = connection.prepareStatement("insert into `Order` (buyer,ProductName) values(?,?)"
);
48 preparedStatement2.setString(1, "XiaoMing"
);
49 preparedStatement2.setString(2, "bag"
);
50 preparedStatement2.execute();
51 System.out.println(preparedStatement2);
52
53 connection.commit();
54 }
catch (SQLException e) {
55 if (connection !=
null)
56 try {
57 connection.rollback();
58 }
catch (Exception e2) {
59 e2.printStackTrace();
60 }
61 }
finally {
62 try {
63 if (connection !=
null)
64 connection.close();
65 if (preparedStatement1 !=
null)
66 preparedStatement1.close();
67 if (preparedStatement2 !=
null)
68 preparedStatement2.close();
69 }
catch (SQLException e2) {
70 e2.printStackTrace();
71 }
72 }
73 }
74
75 public static void main(String[] args)
throws ClassNotFoundException {
76 dbcpInit();
77 tranferAccount();
78 }
79 }
?
轉載于:https://www.cnblogs.com/shenzhi/p/6895889.html
總結
以上是生活随笔為你收集整理的利用jdbc做一个购买的事务的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。