首页 > Java开发 > JDBC之Statement类中“批处理”的综合运用

JDBC之Statement类中“批处理”的综合运用

批处理 介绍

Java 的批处理机制可以一次性执行多条 SQL 语句,效率更高。减少网络流量,速度更快。

通过调用方法 addBatch 可以批量执行此列表中的命令。

调用executeBatch()批量执行sql。

sql通常是insert 【插入】或 update 【更新】或 delete 【删除】操作。

 

批处理的模板代码

 

[java][/java] view plaincopy

  1. try {
  2.     stmt = conn.createStatement();
  3.     stmt.addBatch("insert into ….");
  4.     stmt.addBatch("update B ….");
  5.     stmt.executeBatch(); //执行批处理
  6. } catch (Exception e) {
  7.     e1.printStackTrace();
  8. } finally {
  9.     factory.close(null, stmt, conn);
  10. }

 

 

批处理在 JDBC 中的应用

如下方法可以批量执行多条非查询类 SQL 语句,可以帮助我们在 Java 更快捷进行数据库的处理工作。

方法的返回值为一个 int 类型的数组,该数组用于判断 SQL 语句是否执行成功。(返回 1 则证明执行成功)

 

[java][/java] view plaincopy

  1. /** 批处理:批量执行SQL语句 */
  2. public int[] BatchTest(String[] sqlArr) {
  3.     int arr[] = null;
  4.     getConnection();
  5.     try {
  6.         statement = connection.createStatement();
  7.         if (sqlArr!=null && sqlArr.length>0) {
  8.             for (int i = 0; i < sqlArr.length; i++) {
  9.                 statement.addBatch(sqlArr[i]);
  10.             }
  11.         }
  12.         arr = statement.executeBatch();
  13.     } catch (SQLException e) {
  14.         // TODO Auto-generated catch block
  15.         e.printStackTrace();
  16.     } finally {
  17.         close();
  18.     }
  19.     return arr;
  20. }

 

运用范例

 

[java][/java] view plaincopy

  1. //批处理的应用
  2. JDBC_BaseDAO jDemo1 = new JDBC_BaseDAO();
  3. String[] sqls = new String[10];
  4. sqls[0]="insert into t_userr(username,password) values('s141f','123');";
  5. sqls[1]="insert into t_userr(username,password) values('sg412sf','22352');";
  6. sqls[2]="insert into t_userr(username,password) values('sd124f','325');";
  7. sqls[3]="INSERT INTO t_userr(username,password,sex) values('1jj','11','n');";
  8. sqls[4]="insert into t_userr(username,password) values('s234d14f','6252');";
  9. sqls[5]="UPDATE t_userr SET ruxueYear='2000',home='浙江杭州' WHERE username='1jj';";
  10. int[] arr = jDemo1.BatchTest(sqls);
  11. for(int a:arr){
  12.     System.out.println(a);
  13. }

 

在以上代码中,运用了一个自行定义的 方法close()

代码如下

 

[java][/java] view plaincopy

  1. /** 关闭并释放资源 */
  2. public void close(){
  3.     try {
  4.         if(statement!=null){
  5.             statement.close();
  6.             statement = null;
  7.         }
  8.         if(pStatement!=null){
  9.             pStatement.close();
  10.             pStatement = null;
  11.         }
  12.         if(connection!=null){
  13.             connection.close();
  14.             connection = null;
  15.         }
  16.     } catch (Exception e) {
  17.         System.out.println("数据库close异常");
  18.     }
  19. }

本文固定链接: http://www.devba.com/index.php/archives/1983.html | 开发吧

报歉!评论已关闭.