[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. 09_Mybatis开发Dao方法——mapper代理开发规范
  2. thymeleaf报错:Could not load content for xxx /css/bootstrap.min.css.map:HTTP error: status
  3. 【C++20】vs2019使用modules的实际操作
  4. lamp/lnmp实例
  5. Android 高级Drawable资源---复合Drawable----变换Drawable
  6. 听一听蚂蚁金服机器学习算法中台周俊谈共享智能技术实践:如何降低数据共享的难度?
  7. sklearn.fit_两个小时后仍在运行吗? 如何控制您的sklearn.fit。
  8. Quick BI v3.0版本全新起航——2018杭州云栖大会
  9. linux pe大小,lvm中的pe默认是4M 最大能支持多大 1T?2T
  10. 无代理备份和应用程序感知
  11. # 2017-2018-1 20155224 《信息安全系系统设计基础》第四周MyOD
  12. 双非二本院校,北京211,字节跳动 → 一个新秀的六年
  13. luogu1970 花匠
  14. 计算机故障基本维修方法,11种打印机常见故障维修方法
  15. php微信消息通知,php实现微信小程序消息通知
  16. 转 为什么数码相机可以拍出彩色照片?
  17. 这是一个只有一句话的木MA
  18. Google 搜素技巧分享
  19. 电路设计布线技巧十规则
  20. 普元应用服务器高可靠方案

热门文章

  1. 我是如何在GitHub上开源一个项目的(截图说明) (VS2010可以安装git插件)
  2. 《剑指offer》面试题20——顺时针打印矩阵(C++)
  3. 洛谷——【数据结构1-1】线性表
  4. 林草资源调查监测数据下载
  5. 算法笔记-----归并排序
  6. Flutter之Dialog 简单使用
  7. Android RecyclerView之SnapHelper原理解析(一)
  8. java线程知识点拾遗(CAS)
  9. linux shell写日志,Linux shell编程之文件内容写入和日志记录
  10. android流媒体架构,基于Android平台的流媒体播放器的设计与实现