有一个在线交易电商平台,有两张表,分别是库存表和订单表,如下:


现在买家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做一个购买的事务相关推荐

  1. python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

    原标题:技术图文:如何利用 Python 做一个简单的定时器类? 背景 今天在B站上看有关 Python 最火的一个教学视频 -- "零基础入门学习 Python",这也是我们 P ...

  2. 利用pgzero做一个接球的小游戏

    利用pgzero做一个接球的小游戏 说明 pgzero为python的一个用于游戏制作的库,它基于pygame模块 可用如下命令去安装 pip install pygame pip install p ...

  3. 利用Python做一个简单的对战小游戏

    利用Python做一个简单的文字对战小游戏 一.游戏介绍 1.大体介绍:文字版的对战小游戏,可以利用Python随机生成两个角色,角色带有各自的血量和攻击值两个指标.两人在对战时同时攻击对方,同时造成 ...

  4. 利用Python做一个漂亮小姐姐词云跳舞视频

    最近不少小伙伴在学 Python,想找个好玩的练手项目. 那今天分享一个,简单,适合新手的 Python 小项目. 以下是具体项目: 本文将以哔哩哔哩–乘风破浪视频为例,you-get下载视频. 同时 ...

  5. 利用stm32做一个升级版的电子多功能密码锁

    `自己利用空闲时间制作的电子密码锁,有PCB.原理图,PCB印制电路板.此设计用外部存储器,支持修改密码,本来想添加指纹识别模块,但是12864的数据口被使用了,gpio口不够用.在实际中我发现128 ...

  6. 利用正则做一个会员注册管理系统

    今天学习了利用正则来做一个会员注册管理系统,该系统的主要难点在于: 1.利用正则来判断账号以及密码是否合法 2.字典的增删查改 3.while循环,break,嵌套if判断语句 正则我是在 [正则网页 ...

  7. [探索] 利用promise做一个请求锁

    在最近开发小程序的过程中,遇到一个需求,就是请求的时候header需要带上accessToken, accessToken是通过登陆接口返回的参数,可能会出现过期的情况,则需要重新登陆,所以每次加载小 ...

  8. 怎样利用python做一个软件,python可以自己做软件吗

    python能做什么软件? 主要可以做小程序,爬虫程序,用于系统编程等等还是很广泛的.Python 的应用领域分为下面几类.下文将介绍一些Python 具体能帮我们做的事情. 但我们不会对各个工具进行 ...

  9. 利用Python做一个小姐姐词云跳舞视频

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来源:修炼Python 每周三个人直播,想和我聊天的欢迎来约 ‍‍‍‍‍‍‍朝朝暮暮里,祝愿我们每个人都能沉淀 ...

最新文章

  1. linux安装语言总是waiting,node的serialport在arm的Linux安装血泪史之我太难了
  2. 首发:友盟2015年Q2、Q3中国移动互联网趋势报告
  3. PyCharm中目录directory与包package的区别
  4. Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码
  5. 关于json_decode乱码及NULL的解决方法
  6. mysql数据库查询优化建议_mysql数据库查询优化的24条建议
  7. 注意升级Oracle 19c:SE2标准版不再支持RAC
  8. Docker基础(3)——基础网络模型
  9. [BZOJ]1003 物流运输(ZJOI2006)
  10. Js求时间差、并转换为字符串
  11. 32位计算机支持word系统,Office 32位与64位版本有什么区别?
  12. PTA每日一题-Python-人民币与美元汇率兑换程序
  13. Win32创建异形窗口
  14. 高阶组件HOC - 小试牛刀
  15. 分享两个小技巧,让你的PPT看起来更高级
  16. 学习了m脚本,代数方程求解(P104)
  17. 解决eclipse中java各类中文乱码问题
  18. Java中使用zt-exec执行多shell/Linux命令,执行日志实时推送前端
  19. 学习目标:从零开始学安装Windows11_22H2版本的摄影师照相馆专用gho系统uisoft2.0体验版本
  20. c语言花卉销售与管理系统,花卉销售与管理系统

热门文章

  1. redis分布式缓存php,基于redis分布式缓存实现
  2. keil5用jlink不到芯片_你了解JLink、STLink、ULink、JTAG、SWD、SWIM的区别吗
  3. deepin系统中.txt文件图标显示内容问题_深度系统Deepin 20最新正式版发布:从DDE到应用全面升级-Deepin 20,深度系统 ——快科技(驱动之家旗下媒体)-...
  4. C语言位于30到100之间的一个奇数,《帮你度过C语言新手阶段》系列之三
  5. 【若依(ruoyi)】Bootstrap-Table表格排序
  6. 【linux】查看ip
  7. 限定概率抽奖_圣诞节LOL紫色宝箱30连抽,限定全是冰雪,节日气氛很浓
  8. 您的浏览器由所属组织管理_速度收藏!全省性社会组织年检网上填报指引来了!...
  9. c语言程序设计章节作业网上,C语言程序设计第17章在线测试
  10. 从零开始学习docker(十八)Swarm mode 部署wordpress