zoukankan      html  css  js  c++  java
  • JDBC的批处理操作三种方式

    SQL批处理是JDBC性能优化的重要武器,批处理的用法有三种。

    package lavasoft.jdbctest;

    import lavasoft.common.DBToolkit;

    import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement;

     public class BatchExeSQLTest {

            public static void main(String[] args) {            

             exeBatchStaticSQL();        

       }

            /**          * 批量执行预定义模式的SQL          */      

            public static void exeBatchParparedSQL() {           

             Connection conn = null;             

                   try {                  

                 conn = DBToolkit.getConnection();            

                     String sql = "insert into testdb.book (kind, name) values (?,?)";         

                       PreparedStatement pstmt = conn.prepareStatement(sql);             

                     pstmt.setString(1, "java");                   

                     pstmt.setString(2, "jjjj");                     

               pstmt.addBatch();                     //添加一次预定义参数             

                    pstmt.setString(1, "ccc");                   

                  pstmt.setString(2, "dddd");                   

                pstmt.addBatch();                     //再添加一次预定义参数                   

                //批量执行预定义SQL                   

                pstmt.executeBatch();           

            } catch (SQLException e) {       

                      e.printStackTrace();           

            } finally {                 

                DBToolkit.closeConnection(conn);       

              }       

       }

            /**          * 批量执行混合模式的SQL、有预定义的,还有静态的          */     

        public static void exeBatchMixedSQL() {         

              Connection conn = null;          

              try {                     

                 conn = DBToolkit.getConnection();         

                        String sql = "insert into testdb.book (kind, name) values (?,?)";       

                          PreparedStatement pstmt = conn.prepareStatement(sql);         

                          pstmt.setString(1, "java");                 

                     pstmt.setString(2, "jjjj");                    

                   pstmt.addBatch();    //添加一次预定义参数              

                         pstmt.setString(1, "ccc");                     

                  pstmt.setString(2, "dddd");                     

                  pstmt.addBatch();    //再添加一次预定义参数          

                                 //添加一次静态SQL          

                         pstmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");          

                                //批量执行预定义SQL                        

                 pstmt.executeBatch();               

          } catch (SQLException e) {           

                    e.printStackTrace();           

            } finally {                      

             DBToolkit.closeConnection(conn);          

             }    

         }

            /**          * 执行批量静态的SQL          */     

        public static void exeBatchStaticSQL() {            

             Connection conn = null;           

               try {                       

                conn = DBToolkit.getConnection();        

                           Statement stmt = conn.createStatement();                         //连续添加多条静态SQL                 

                    stmt.addBatch("insert into testdb.book (kind, name) values ('java', 'java in aciton')");         

                           stmt.addBatch("insert into testdb.book (kind, name) values ('c', 'c in aciton')");       

                           stmt.addBatch("delete from testdb.book where kind ='C#'");            

                        stmt.addBatch("update testdb.book set kind = 'JAVA' where kind='java'");

                               //  stmt.addBatch("select count(*) from testdb.book");                //批量执行不支持Select语句                  

                   //执行批量执行                     

                  stmt.executeBatch();           

                } catch (SQLException e) {             

                      e.printStackTrace();          

               } finally {                   

                DBToolkit.closeConnection(conn);            

             }      

         }

    }

    注意:JDBC的批处理不能加入select语句,否则会抛异常:

    java.sql.BatchUpdateException: Can not issue SELECT via executeUpdate().   at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:1007)

    本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/238651

  • 相关阅读:
    选择器高级,from提交方式
    java基础(5)
    java基础(4)
    java基础(3)
    java基础(2)
    java基础(1)
    数据库基础与ADO.NET和C#中的异常处理
    C#中字符串的常用方法
    Linux基本命令格式(3)
    面向对象第二章
  • 原文地址:https://www.cnblogs.com/JsonShare/p/4150748.html
Copyright © 2011-2022 走看看