PreparedStatement批量处理和事务
- PreparedStatement批量处理和事务代码如下:
- /*
- * PreparedStatement:
- 1.addBatch() 将一组参数添加到 PreparedStatement对象内部
- 2.executeBatch() 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
- *
- */
- public class PreparedStatementCommitAndRollback {
- public static void main(String args[]) {
- Connection con = null;
- PreparedStatement pstm = null;
- try {
- // 1. 建立与数据库的连接
- con = JDBCUtil.getConnection();
- // 2. 执行sql语句
- // 1).先创建PreparedStatement语句(发送slq请求):
- pstm = con.prepareStatement("insert into student values(?,?,?,?)");
- con.setAutoCommit(false);//1,首先把Auto commit设置为false,不让它自动提交
- // 2) 设置sql语句1
- pstm.setInt(1, 33);
- pstm.setString(2,"wangqin");
- pstm.setString(3, "c++");
- pstm.setDouble(4, 78.5);
- // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
- pstm.addBatch();
- // 2) 设置sql语句2
- pstm.setInt(1, 34);
- pstm.setString(2,"wuytun");
- pstm.setString(3, "c");
- pstm.setDouble(4, 77);
- // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
- pstm.addBatch();
- // 2) 设置sql语句3
- pstm.setInt(1, 31);
- pstm.setString(2,"tetet");
- pstm.setString(3, "c++");
- pstm.setDouble(4, 90);
- // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
- pstm.addBatch();
- // 2) 设置sql语句4
- pstm.setInt(1, 32);
- pstm.setString(2,"liug");
- pstm.setString(3, "c");
- pstm.setDouble(4, 50);
- // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
- pstm.addBatch();
- // 4) 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
- pstm.executeBatch();
- System.out.println("插入成功!");
- // 若成功执行完所有的插入操作,则正常结束
- con.commit();//2,进行手动提交(commit)
- System.out.println("提交成功!");
- con.setAutoCommit(true);//3,提交完成后回复现场将Auto commit,还原为true,
- } catch (SQLException e) {
- try {
- // 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态
- if(!con.isClosed()){
- con.rollback();//4,当异常发生执行catch中SQLException时,记得要rollback(回滚);
- System.out.println("插入失败,回滚!");
- con.setAutoCommit(true);
- }
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
- }finally{
- JDBCUtil.closePreparedStatement(pstm);
- JDBCUtil.closeConnection(con);
- }
- }
- }
- 这是Statement的代码,同上:
- stm = con.createStatement();
- con.setAutoCommit(false);
- // 若不出现异常,则继续执行到try语句完,否则跳转到catch语句中
- stm.addBatch("insert into student values(23,'tangbao','高数',100)");
- stm.addBatch("insert into student values(24,'王定','c#',98)");
- stm.addBatch("insert into student values(25,'王国云','java',90)");
- stm.addBatch("insert into student values(26,'溜出','英语',89)");
- stm.addBatch("insert into student values(27,'wqde','java',63)");
- /*
- * int[] executeBatch() throws
- * SQLException将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
- */
- stm.executeBatch();
PreparedStatement批量处理和事务相关推荐
- PreparedStatement批量执行sql
2019独角兽企业重金招聘Python工程师标准>>> 案例: 工具方法: public static Connection getConnection(){try {Class.f ...
- JDBC:PreparedStatement 插入BLOB类型的数据,PreparedStatement 批量处理,Connection 事务处理
JDBC:PreparedStatement 插入BLOB类型的数据,PreparedStatement 批量处理,Connection 事务处理 每博一文案 村上春树说: 你要做一个不动声色的大人了 ...
- mysql preparedstatement 批量update,PreparedStatement的批量更新的有关问题(只执行最后一条插入语句)...
PreparedStatement的批量更新的问题(只执行最后一条插入语句) 本帖最后由 zhrubin 于 2014-07-07 10:47:41 编辑 后台是MySql,大家有没有碰到添加了很多a ...
- PreparedStatement批量处理的一个Framework(原创)
场景: 批量进行DML操作,但涉及的表不同,不能使用executeBatch() 需求: (1)如果DML中有一个错误时,要全部回滚: (2)如果全部正确,要全部执行: 解决方案: package j ...
- java jdbc 批量更新_java – JDBC PreparedStatement,批量更新和生成的密钥
我在批处理中使用jdbc preparedStatement并尝试获取由此创建的生成密钥时出现问题. 代码 : PreparedStatement stmt = null; ... connectio ...
- 多线程的SqlBulkCopy批量导入、事务和SqlBulkCopy使用的数据集中自定义映射字段的注意事项
class Program { static volatile bool result; static void Main(string[] args) { DataSet ds = ExportDa ...
- php prepare 批量,PreparedStatement批处理
PreparedStatement批量更新关键代码 无 import java.sql.Connection;import java.sql.PreparedStatement; //...Strin ...
- mysql 消息队列_一个简单的 MySQL 批量事务消息队列
基于 MySQL 的批量事务消息队列 消息队列本质上是一个存储介质,通常是链表结构,不同的进程或线程可以向消息队列中写入或读取消息.消息队列的使用场景有很多,比如异步处理任务.应用解耦.流量削锋等等. ...
- java事务以及批量更新
java事务以及批量更新 1.概念简介 事务是一步或多部数据库操作序列组成的逻辑单元,这系列操作要么全部执行,要么全部放弃执行. 2.注意 一个事务可以由一组DML组成或者一个DDL语句或者一个D ...
- JDBC高级特性(一)结果集,批量更新
一.ResultSet的高级特性 1 可滚动ResultSet 1)向前和向后滚动 滚动特性 在JDBC初期版本号中, ResultSet仅能向前滚动 在JDBC兴许版本号中, ResultSet默认 ...
最新文章
- Webpack4 高手之路 第一天
- Java 匿名对象、内部类
- UVA 11995 I Can Guess the Data Structure! STL
- 产品需求被误解是一种什么样的体验?
- log4j:WARN No appenders could be found for logger ().解决方案
- 1.1万亿!华为第一!
- 液晶屏和计算机组成,液晶显示屏结构是什么 液晶显示屏结构介绍【图文】
- win10双显卡怎么切换amd和英特尔_win10双显卡怎么切换
- 信奥中的数学:微积分 高等数学 数学分析
- mysql5.8安装
- 《一次失败沟通后的自我觉察》
- mysql 别名_MySQL 字段别名(列别名)
- 马化腾是学计算机的吗,马化腾大学实际上是病毒编写者,经常编写感染计算机的程序...
- 实验五 对等网的组建--自我操作
- vue v-for循环表格, 每行显示2个元素td
- 微信支付V3生成平台证书
- 手把手教你如何设置H5页面动画效果
- Unity向Web服务器上传和下载图片
- Peakcoo软硬件方案设计——汽车胎压表气压计PCBA方案
- 将sqlite源码放进自己的工程一起编译