`

PreparedStatement&Statement 批量update操作

    博客分类:
  • java
 
阅读更多

发现一个比较清晰的例子特保存以备查阅

转自:http://wangqinqin.iteye.com/blog/547277

PreparedStatement

1) addBatch()将一组参数添加到PreparedStatement对象内部。

2) executeBatch()将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。

Statement

1) addBatch(String sql)方法会在批处理缓存中加入一条sql语句。

2) executeBatch()执行批处理缓存中的所有sql语句。

注意:PreparedStatement中使用批量更新时,要先设置好参数后再使用addBatch()方法加入缓存。批量更新中只能使用更改、删除或插入语句。

 

Java代码 复制代码 收藏代码
  1. Statement批量处理和事务代码如下:   
  2. package com.ambow.day20.jdbc.JDBCTestCommitAndRollback;   
  3. import java.sql.Connection;   
  4. import java.sql.SQLException;   
  5. import java.sql.Statement;   
  6. import com.ambow.day19.jdbc.util.JDBCConAndClo;   
  7. /*  
  8.  *1,首先把Auto commit设置为false,不让它自动提交  
  9.  *2,进行手动提交(commit)  
  10.  *3,提交完成后回复现场将Auto commit,还原为true,  
  11.  *4,当异常发生执行catch中SQLException时,记得要rollback(回滚);  
  12.  * */  
  13. public class StatementCommitAndRollbackTest {   
  14.     public static void main(String args[]) {   
  15.         Connection con = null;   
  16.         Statement stm = null;   
  17.         try {   
  18.             con = JDBCConAndClo.getConnectionBao();   
  19.             stm = con.createStatement();   
  20.             con.setAutoCommit(false);   
  21.             // 若不出现异常,则继续执行到try语句完,否则跳转到catch语句中   
  22.             stm.addBatch("insert into student values(23,'tangbao','高数',100)");   
  23.             stm.addBatch("insert into student values(24,'王定','c#',98)");   
  24.             stm.addBatch("insert into student values(25,'王国云','java',90)");   
  25.             stm.addBatch("insert into student values(26,'溜出','英语',89)");   
  26.             stm.addBatch("insert into student values(27,'wqde','java',63)");   
  27.             /*  
  28.              * int[] executeBatch() throws  
  29.              * SQLException将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。  
  30.              */  
  31.             stm.executeBatch();   
  32.             System.out.println("插入成功!");   
  33.             // commit:若成功执行完所有的插入操作,则正常结束   
  34.             con.commit();   
  35.             System.out.println("提交成功!");   
  36.             con.setAutoCommit(true);   
  37.   
  38.         } catch (SQLException e) {   
  39.             e.printStackTrace();   
  40.             try {   
  41.     //rollback: 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态   
  42.                 if (!con.isClosed()) {   
  43.                     con.rollback();   
  44.                     System.out.println("提交失败,回滚!");   
  45.                     con.setAutoCommit(true);   
  46.                 }   
  47.             } catch (SQLException e1) {   
  48.                 e1.printStackTrace();   
  49.             } finally {   
  50.                 JDBCConAndClo.closeStatement(stm);   
  51.                 JDBCConAndClo.closeConnection(con);   
  52.             }   
  53.         }   
  54.     }   
  55. }   
  56. PreparedStatement批量处理和事务代码如下:   
  57. package com.ambow.day20.jdbc.JDBCTestCommitAndRollback;   
  58. import java.sql.Connection;   
  59. import java.sql.PreparedStatement;   
  60. import java.sql.SQLException;   
  61. import com.ambow.day19.jdbc.util.JDBCConAndClo;   
  62.   
  63. /*  
  64.  * PreparedStatement:  
  65.  1.addBatch() 将一组参数添加到 PreparedStatement对象内部  
  66.  2.executeBatch() 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。  
  67.  *   
  68.  */  
  69. public class PreparedStatementCommitAndRollbackTest {   
  70.     public static void main(String args[]) {   
  71.         Connection con = null;   
  72.         PreparedStatement pstm = null;   
  73.   
  74.         try {   
  75.             // 1. 建立与数据库的连接   
  76.             con = JDBCConAndClo.getConnectionBao();   
  77.             // 2. 执行sql语句   
  78.             // 1).先创建PreparedStatement语句(发送slq请求):   
  79.             pstm = con.prepareStatement("insert into student values(?,?,?,?)");   
  80.             con.setAutoCommit(false);//1,首先把Auto commit设置为false,不让它自动提交   
  81.             // 2) 设置sql语句1   
  82.             pstm.setInt(133);   
  83.             pstm.setString(2,"wangqin");   
  84.             pstm.setString(3"c++");   
  85.             pstm.setDouble(478.5);   
  86.             // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   
  87.             pstm.addBatch();   
  88.             // 2) 设置sql语句2   
  89.             pstm.setInt(134);   
  90.             pstm.setString(2,"wuytun");   
  91.             pstm.setString(3"c");   
  92.             pstm.setDouble(477);   
  93.             // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   
  94.             pstm.addBatch();   
  95.             // 2) 设置sql语句3   
  96.             pstm.setInt(131);   
  97.             pstm.setString(2,"tetet");   
  98.             pstm.setString(3"c++");   
  99.             pstm.setDouble(490);   
  100.             // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   
  101.             pstm.addBatch();   
  102.             // 2) 设置sql语句4   
  103.             pstm.setInt(132);   
  104.             pstm.setString(2,"liug");   
  105.             pstm.setString(3"c");   
  106.             pstm.setDouble(450);   
  107.             // 3) 将一组参数添加到此 PreparedStatement 对象的批处理命令中。   
  108.             pstm.addBatch();   
  109.             // 4) 将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。   
  110.             pstm.executeBatch();   
  111.             System.out.println("插入成功!");   
  112.             // 若成功执行完所有的插入操作,则正常结束   
  113.             con.commit();//2,进行手动提交(commit)   
  114.             System.out.println("提交成功!");   
  115.             con.setAutoCommit(true);//3,提交完成后回复现场将Auto commit,还原为true,   
  116.   
  117.         } catch (SQLException e) {   
  118.             e.printStackTrace();   
  119.             try {   
  120.                 // 若出现异常,对数据库中所有已完成的操作全部撤销,则回滚到事务开始状态   
  121.                 if(!con.isClosed()){   
  122.                     con.rollback();//4,当异常发生执行catch中SQLException时,记得要rollback(回滚);   
  123.                     System.out.println("插入失败,回滚!");   
  124.                     con.setAutoCommit(true);   
  125.                 }   
  126.             } catch (SQLException e1) {   
  127.                 e1.printStackTrace();   
  128.             }   
  129.         }finally{   
  130.             JDBCConAndClo.closePreparedStatement(pstm);   
  131.             JDBCConAndClo.closeConnection(con);   
  132.         }   
  133.     }   
  134. }  
分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第23天-02.sql注入-preparedstatement-批量插入 - 副本.zip

    总的来说,PreparedStatement和批量插入是Java数据库操作中的重要技巧,它们既能有效防止SQL注入攻击,又能提高程序运行效率。在开发过程中,我们应该养成使用PreparedStatement和批量插入的良好习惯,以确保代码的...

    JDBC PrepareStatement 使用(附各种场景 demo)

    本资源主要涵盖了使用JDBC PrepareStatement进行MySQL数据库操作的各种场景,包括基本的查询、更新以及批量处理。 首先,我们来看一下JDBC连接MySQL的步骤。在Java程序中,我们需要导入相应的JDBC驱动,例如`...

    三种JDBC批量插入编程方法的比较

    在`JDBCBatchInsertTest.java`中可能包含了对Statement批量处理的测试代码,演示了如何构建SQL数组并调用`batchUpdate()`。 3. **使用CallableStatement的批处理** 虽然CallableStatement主要用于存储过程的调用,...

    JDBC的批量处理语句

    对于第一种情况,我们可以使用 JDBC 的批量处理语句,创建一个 Statement 对象,然后 addBatch 多条 SQL 语句,最后执行 executeBatch() 方法。这可以减少创建多个 Statement 对象的开销,并提高执行效率。 例如: ...

    PreparedStatement 详细用法

    3. **批量更新**:`PreparedStatement`支持批量执行SQL更新语句,可以减少网络开销和提高执行效率。 #### 四、详细解析 1. **创建PreparedStatement对象**: - 使用`Connection.prepareStatement(String sql)`...

    jdbc-批量插入数据

    `java.sql.Statement`和`java.sql.PreparedStatement`接口都提供了批量处理的方法。批量处理主要通过`addBatch()`方法添加SQL语句到批处理队列,然后通过`executeBatch()`方法一次性执行所有已添加的SQL。 以下是一...

    技术支持利用JSON数据批量操作数据库(插入、更新)

    本篇文章详细介绍了如何利用JSON数据批量操作数据库(插入、更新),包括JSON数据的解析、数据库的连接与操作以及异常处理等方面的知识点。通过这些知识点的学习,读者可以更好地理解和应用相关的技术,在实际项目...

    java代码oracle数据库批量插入

    - **创建PreparedStatement**: 通过`PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql.toString());`创建PreparedStatement对象,这个对象允许我们执行预编译的SQL语句,并且可以多次执行相同...

    SSH笔记-管理Session和批量操作数据库

    - JDBC提供`Statement`或`PreparedStatement`的`executeBatch()`方法执行批量SQL语句,减少数据库连接开销,提高效率。 - 需要注意批量操作时的参数设置,如批大小(batch size),以及在出现错误时如何处理剩余的...

    Spring JdbcTemplate.batchUpdate 例子

    总之,`Spring JdbcTemplate.batchUpdate`是处理批量数据库操作的强大工具,它可以提高效率,减少与数据库的交互次数。然而,正确地使用它需要对事务管理、异常处理和性能优化有深入的理解。通过合理的配置和良好的...

    MySQL BLOB类型中二进制字段和批量操作输入.docx

    例如,在Java中,可以通过FileInputStream对象来读取本地文件内容,然后通过setBlob方法设置到PreparedStatement中进行插入或更新操作。 以下是一些关于使用PreparedStatement操作BLOB字段的示例代码: 1. 插入...

    关于JAVA数据库基本操作

    - 在完成数据库操作后,应该释放所有使用的资源,包括`ResultSet`、`Statement`或`PreparedStatement`以及`Connection`: ```java rs.close(); sm.close(); cn.close(); ``` #### 二、几个常用的重要技巧 ##...

    批量插入或更新.zip

    在Java编程中,批量插入(Bulk Insert)和更新(Bulk Update)是提高数据库操作效率的重要技术,尤其是在处理大量数据时。这些操作可以显著减少数据库访问次数,从而提升系统性能,节省资源,降低延迟,这对于追求高...

    mysql,jdbc详解,与ibatis对比。批量查询,分页处理。

    - **执行SQL**: 使用`Statement`或`PreparedStatement`执行SQL语句。 - **处理结果**: 读取`ResultSet`中的数据或检查`PreparedStatement`的执行状态。 - **关闭资源**: 关闭`ResultSet`、`Statement`和`Connection`...

    java数据库简单操作

    在Java编程中,数据库操作是不可或缺的一部分,尤其是在开发企业级应用程序...在实际项目中,你可能还会涉及错误处理、异常捕获、批量操作等复杂场景。学习并熟练掌握这些知识,将使你在Java数据库编程中更加得心应手。

    j2ee07:jdbc01:Properties对象、四大参数、批量删除、基本的增删改查

    - **Update(更新)**:使用PreparedStatement的executeUpdate()方法执行UPDATE语句,修改已有记录。 - **Delete(删除)**:同样通过PreparedStatement的executeUpdate()方法执行DELETE语句,移除记录。 在实际...

    08、综合案例-使用JDBC完成商城项目的CRUD

    在本综合案例中,我们将深入探讨如何利用Java Database Connectivity(JDBC)技术来实现一个商城项目的数据存取操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete),通常简称为CRUD操作。...

    基础操作1

    在IT行业中,数据库操作是核心任务之一,尤其是在大型系统中,高效的批量操作至关重要。本文将详细探讨如何在XML文件中配置Hibernate,利用其内置的JDBC功能来执行批量更新和删除操作。 首先,批量操作主要涉及到...

    实例讲解Java批量插入、更新数据

    总的来说,Java中的批量插入和更新是通过PreparedStatement的批处理功能实现的,结合有效的事务管理和前端数据收集,能够有效地处理大量数据库操作。在实际应用中,我们需要根据业务需求和系统性能进行适当的调整,...

    jsp Hibernate批量更新和批量删除处理代码.docx

    PreparedStatement stmt = con.prepareStatement("update CUSTOMERS set AGE = AGE + 1 where AGE > 0"); stmt.executeUpdate(); tx.commit(); ``` 在这个例子中,我们不再依赖Hibernate的API,而是通过JDBC直接...

Global site tag (gtag.js) - Google Analytics