重点prepareStatement进行了预编译在执行,就是通过了jdkJava虚拟机编译再执行的,执行效率非常高

事务回滚(重)

package cn.com.zzn;import java.sql.*;/*** 1.加载驱动* 2.获取连接对象* 3.语句对象执行sql* 4.处理返回结果* 5.释放资源* **/public class DBTest {private static String URL="jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8";private static String DriverClass="com.mysql.cj.jdbc.Driver";private static String USERNAME = "db01";private static String PASSWORD = "db01";private static Connection connection = null;private static PreparedStatement ps = null;private static ResultSet resultSet = null;/*** 获取连接* @return*/public static Connection getConnection(){//        捕获异常try {Class.forName(DriverClass);connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);System.out.println("11111");
//            处理异常} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}return connection;}/*** 释放资源*/public static void closeReouse(){if (connection!=null){try {System.out.println("22222");connection.close();} catch (SQLException e) {e.printStackTrace();}}}/**创建表order2*/public static void createTable(){connection = getConnection();try {ps= connection.prepareStatement(""+"create table order2("+"o_id int not null primary key auto_increment,"+"o_name varchar(20),"+"o_pirce varchar(20),"+"o_date date "+")");int result = ps.executeUpdate();System.out.println(result);} catch (SQLException e) {e.printStackTrace();}}/**创建表account**/public static void createAccount(){connection = getConnection();try {ps = connection.prepareStatement(""+"create table account("+"id int primary key not null auto_increment,"+"name varchar(20),"+"money double(10,2) "+") ");int result = ps.executeUpdate();System.out.println(result);} catch (SQLException e) {e.printStackTrace();}}/**新增account数据*/public static void insertAccount() throws SQLException {connection = getConnection();try {ps = connection.prepareStatement("insert into account(name,money) values (?,?),(?,?)");ps.setString(1,"张三");ps.setInt(2,10000);ps.setString(3,"李四");ps.setInt(4,10000);int update = ps.executeUpdate();System.out.println(update);} catch (SQLException e) {e.printStackTrace();}}/***修改account数据*  * 模拟一次转账操作* */public static void UpdateAccount() throws SQLException {connection = getConnection();connection.setAutoCommit(false); //设置不自动提交Savepoint savepoint = null;//支出try {ps= connection.prepareStatement("update account set money= money-5000 where name ='张三'");ps.executeUpdate();//回滚点以上的继续执行,回滚点以下的不执行savepoint = connection.setSavepoint();//回滚点int i = 200/0; //产生异常//收入ps =connection.prepareStatement("update account set money= money+5000 where name ='李四'");ps.executeUpdate();} catch (Exception e) {connection.rollback(savepoint); //回滚}finally {connection.commit();}}/*新增数据**/public static void insertOrder2(){connection = getConnection();try {ps = connection.prepareStatement("insert into order2(o_name,o_pirce,o_date) values (?,?,?)");ps.setString(1,"小周");ps.setString(2,"hhh");ps.setDate(3,new Date(20210908));int update = ps.executeUpdate();System.out.println(update);} catch (SQLException e) {e.printStackTrace();}}/*** 查询数据* **/public static void getStudents(){try {getConnection();ps =connection.prepareStatement("select * from student");resultSet = ps.executeQuery();while (resultSet.next()){System.out.println(resultSet.getInt("s_id")+"/"+resultSet.getString("s_name"));}} catch (SQLException e) {e.printStackTrace();}}public static void main(String[] args) throws SQLException {//         connection = DBTest.getConnection();
//         if (connection !=null){//             System.out.println("连接成功");
//         }else {//             System.out.println("连接失败");
//         }
//        getStudents();
//        createTable();
//        insertOrder2();
//        insertAccount();UpdateAccount();closeReouse();}
}

JDBC操作(基础篇)相关推荐

  1. python书籍推荐1001python书籍推荐_Python的1001种骚操作——基础篇(0)

    写在第0行: 已经断断续续地所谓自学了大半年的Python语言.现在回想起来,只有躺在Pycharm里的30个.py文件,我并没有留下一些实质性的干货,但是我又喜欢自己弄点小的黑科技来娱乐一些枯燥的学 ...

  2. 数据库操作--基础篇

    文章目录 一.什么是数据库 基础知识 数据库主键,外键,索引 关系型和非关系型数据库的区别 二.数据库命令 MySQL语法规范 基础查询 常见增删改查语法介绍 三.DQL语言的学习 SQL的执行顺序 ...

  3. h5 表单居中_3分钟学会易企秀H5操作(基础篇)

    说起当下流行的微信朋友圈广告,H5广告可以说是最具有代表性意义的一种.目前H5制作平台有很多,今天主要给他家分享下易企秀H5平台,教你3分钟学会易企秀H5. 我知道大家时间很宝贵,这里我们就长话短说, ...

  4. 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(下)

    第1章.基础篇(下) Abstract: 数据通信.数据存储.动画.音频与视频.canvas.BOM.表单操作.列表操作 数据通信(HTTP协议) HTTP事务: 客户端向服务器端发送HTTP请求报文 ...

  5. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  6. java监听数据库操作_第十六篇——JDBC操作数据库之监听器

    JavaWeb应用中,很多的地方都和session有关.因此session相关的事件监听器,在日常工作中非常有用. 有时候我们需要统计当前在线的人数和访问人数总数,此时就可以使用监听器技术来很简单的实 ...

  7. datagrid出现相同两组数据_stata 数据操作基础知识:以一篇论文数据操作为例

    stata 数据操作基础知识:以一篇论文数据操作为例 上节回顾及问题 统计学学习大图景 数据描述 分位数回归 存在的问题: 1.学了就要多使用,哪怕生搬硬套也要多用 2.时间序列的方法,大家可以操作, ...

  8. java peek函数_基础篇:JAVA.Stream函数,优雅的数据流操作

    写在开头:本文是转载于掘金上的一篇文章,已获得原作者授权,我会在文章最后放上原作者和原文链接. 前言 平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看.java提供了Stre ...

  9. (一)JAVA基于OPENXML的word文档插入、合并、替换操作系列之基础篇

    (一)JAVA基于OPENXML的word文档插入.合并.替换操作系列之基础篇 前言 什么是Open Xml? Open XML SDK 这系列笔记要做点什么? 涉及技术点 关于word.openxm ...

最新文章

  1. linux dbus-daemon进程 消息转发 简介
  2. jmeter(五)几种不同的content-type方式
  3. 台湾大学林轩田机器学习基石课程学习笔记3 -- Types of Learning
  4. 5月16日 | 硬核突破,应用革新!阿里云数据库线下活动-北京站开启
  5. TCP/IP ---封装与分用
  6. Springboot中几个层的功能总结
  7. 亲密关系沟通-【信任感】-巩固信任感的沟通方法
  8. 临时开启PHP错误提示
  9. 大数据分析-第十二章 Spark与数据分析
  10. 对 a = [lambda : x for x in range(3)] 的理解
  11. layui图标不显示的解决办法
  12. AltiumDesigner2020导入3D Body-SOLIDWORKS三维模型
  13. IOS APP资源网站汇总
  14. 夜神模拟器4K模拟配置
  15. 马云:曾去肯德基面试25人就我没被录用 30多年彷徨成就今天
  16. 推荐一个可以倍速播放HTML5视频的脚本
  17. 光猫修改上报服务器地址,怎样改光猫的ip地址!急求!!
  18. RNA-seq全流程分析
  19. 迅捷音频转换器怎么使用? 1
  20. 哈希存储、哈希表原理

热门文章

  1. 字体海报设计灵感|这海报的字体够别致,脑洞够大!
  2. 电商设计师(美工)必备的素材网站|优图!
  3. 3D视界迎来全息视角,VR呈现效果海报,引领未来
  4. php urledcode_用JavaScript实现PHP的urldecode函数
  5. pr调色预设_视频调色不好掌握?用这2000套PR、AE、达芬奇调色预设吧
  6. Python爬虫时中文乱码的处理
  7. 拼图游戏的设计与实现
  8. RenderMan:渲染技术
  9. 自旋锁:pthread_spinlock_t,互斥锁:pthread_mutex_t,条件变量:pthread_cond_t,读写锁:pthread_rwlock_t
  10. POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )