[java] view plaincopy
  1. PreparedStatement批量处理和事务代码如下:
  2. /*
  3. * PreparedStatement:
  4. 1.addBatch() 将一组参数添加到 PreparedStatement对象内部
  5. 2.executeBatch() 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
  6. *
  7. */
  8. public class PreparedStatementCommitAndRollback {
  9. public static void main(String args[]) {
  10. Connection con = null;
  11. PreparedStatement pstm = null;
  12. try {
  13. // 1. 建立与数据库的连接
  14. con = JDBCUtil.getConnection();
  15. // 2. 执行sql语句
  16. // 1).先创建PreparedStatement语句(发送slq请求):
  17. pstm = con.prepareStatement("insert into student values(?,?,?,?)");
  18. con.setAutoCommit(false);//1,首先把Auto commit设置为false,不让它自动提交
  19. // 2) 设置sql语句1
  20. pstm.setInt(1, 33);
  21. pstm.setString(2,"wangqin");
  22. pstm.setString(3, "c++");
  23. pstm.setDouble(4, 78.5);
  24. // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
  25. pstm.addBatch();
  26. // 2) 设置sql语句2
  27. pstm.setInt(1, 34);
  28. pstm.setString(2,"wuytun");
  29. pstm.setString(3, "c");
  30. pstm.setDouble(4, 77);
  31. // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
  32. pstm.addBatch();
  33. // 2) 设置sql语句3
  34. pstm.setInt(1, 31);
  35. pstm.setString(2,"tetet");
  36. pstm.setString(3, "c++");
  37. pstm.setDouble(4, 90);
  38. // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
  39. pstm.addBatch();
  40. // 2) 设置sql语句4
  41. pstm.setInt(1, 32);
  42. pstm.setString(2,"liug");
  43. pstm.setString(3, "c");
  44. pstm.setDouble(4, 50);
  45. // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
  46. pstm.addBatch();
  47. // 4) 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
  48. pstm.executeBatch();
  49. System.out.println("插入成功!");
  50. // 若成功执行完所有的插入操作,则正常结束
  51. con.commit();//2,进行手动提交(commit)
  52. System.out.println("提交成功!");
  53. con.setAutoCommit(true);//3,提交完成后回复现场将Auto commit,还原为true,
  54. } catch (SQLException e) {
  55. try {
  56. // 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态
  57. if(!con.isClosed()){
  58. con.rollback();//4,当异常发生执行catch中SQLException时,记得要rollback(回滚);
  59. System.out.println("插入失败,回滚!");
  60. con.setAutoCommit(true);
  61. }
  62. } catch (SQLException e1) {
  63. e1.printStackTrace();
  64. }
  65. }finally{
  66. JDBCUtil.closePreparedStatement(pstm);
  67. JDBCUtil.closeConnection(con);
  68. }
  69. }
  70. }
[java] view plaincopy
[java] view plaincopy
  1. 这是Statement的代码,同上:
  2. stm = con.createStatement();
  3. con.setAutoCommit(false);
  4. // 若不出现异常,则继续执行到try语句完,否则跳转到catch语句中
  5. stm.addBatch("insert into student values(23,'tangbao','高数',100)");
  6. stm.addBatch("insert into student values(24,'王定','c#',98)");
  7. stm.addBatch("insert into student values(25,'王国云','java',90)");
  8. stm.addBatch("insert into student values(26,'溜出','英语',89)");
  9. stm.addBatch("insert into student values(27,'wqde','java',63)");
  10. /*
  11. * int[] executeBatch() throws
  12. * SQLException将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
  13. */
  14. stm.executeBatch();

PreparedStatement批量处理和事务相关推荐

  1. PreparedStatement批量执行sql

    2019独角兽企业重金招聘Python工程师标准>>> 案例: 工具方法: public static Connection getConnection(){try {Class.f ...

  2. JDBC:PreparedStatement 插入BLOB类型的数据,PreparedStatement 批量处理,Connection 事务处理

    JDBC:PreparedStatement 插入BLOB类型的数据,PreparedStatement 批量处理,Connection 事务处理 每博一文案 村上春树说: 你要做一个不动声色的大人了 ...

  3. mysql preparedstatement 批量update,PreparedStatement的批量更新的有关问题(只执行最后一条插入语句)...

    PreparedStatement的批量更新的问题(只执行最后一条插入语句) 本帖最后由 zhrubin 于 2014-07-07 10:47:41 编辑 后台是MySql,大家有没有碰到添加了很多a ...

  4. PreparedStatement批量处理的一个Framework(原创)

    场景: 批量进行DML操作,但涉及的表不同,不能使用executeBatch() 需求: (1)如果DML中有一个错误时,要全部回滚: (2)如果全部正确,要全部执行: 解决方案: package j ...

  5. java jdbc 批量更新_java – JDBC PreparedStatement,批量更新和生成的密钥

    我在批处理中使用jdbc preparedStatement并尝试获取由此创建的生成密钥时出现问题. 代码 : PreparedStatement stmt = null; ... connectio ...

  6. 多线程的SqlBulkCopy批量导入、事务和SqlBulkCopy使用的数据集中自定义映射字段的注意事项

    class Program { static volatile bool result; static void Main(string[] args) { DataSet ds = ExportDa ...

  7. php prepare 批量,PreparedStatement批处理

    PreparedStatement批量更新关键代码 无 import java.sql.Connection;import java.sql.PreparedStatement; //...Strin ...

  8. mysql 消息队列_一个简单的 MySQL 批量事务消息队列

    基于 MySQL 的批量事务消息队列 消息队列本质上是一个存储介质,通常是链表结构,不同的进程或线程可以向消息队列中写入或读取消息.消息队列的使用场景有很多,比如异步处理任务.应用解耦.流量削锋等等. ...

  9. java事务以及批量更新

    java事务以及批量更新 1.概念简介 事务是一步或多部数据库操作序列组成的逻辑单元,这系列操作要么全部执行,要么全部放弃执行. 2.注意 一个事务可以由一组DML组成或者一个DDL语句或者一个D ...

  10. JDBC高级特性(一)结果集,批量更新

    一.ResultSet的高级特性 1 可滚动ResultSet 1)向前和向后滚动 滚动特性 在JDBC初期版本号中, ResultSet仅能向前滚动 在JDBC兴许版本号中, ResultSet默认 ...

最新文章

  1. Webpack4 高手之路 第一天
  2. Java 匿名对象、内部类
  3. UVA 11995 I Can Guess the Data Structure! STL
  4. 产品需求被误解是一种什么样的体验?
  5. log4j:WARN No appenders could be found for logger ().解决方案
  6. 1.1万亿!华为第一!
  7. 液晶屏和计算机组成,液晶显示屏结构是什么 液晶显示屏结构介绍【图文】
  8. win10双显卡怎么切换amd和英特尔_win10双显卡怎么切换
  9. 信奥中的数学:微积分 高等数学 数学分析
  10. mysql5.8安装
  11. 《一次失败沟通后的自我觉察》
  12. mysql 别名_MySQL 字段别名(列别名)
  13. 马化腾是学计算机的吗,马化腾大学实际上是病毒编写者,经常编写感染计算机的程序...
  14. 实验五 对等网的组建--自我操作
  15. vue v-for循环表格, 每行显示2个元素td
  16. 微信支付V3生成平台证书
  17. 手把手教你如何设置H5页面动画效果
  18. Unity向Web服务器上传和下载图片
  19. Peakcoo软硬件方案设计——汽车胎压表气压计PCBA方案
  20. 将sqlite源码放进自己的工程一起编译

热门文章

  1. 下课拉~~~~~~~~~~~想写就写
  2. 【Prison Break】第六天(4.2)
  3. 【LeetCode】【字符串】题号:*49. 字母异位词分组
  4. 《深度学习Python实践》第14章——自动流程
  5. Vite Vue项目加载Cesium模块
  6. 设计模式-01-设计模式简介及分类
  7. Java并发编程实战读书笔记(1)
  8. Flutter Provider框架实现简单的购物车
  9. Java并发编程实践笔记(一)
  10. 为什么 HashMap 的加载因子是0.75?我研究源码发现一个重大秘密。。。