实验3种JDBC插入数据效率

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


public class test3 {
    
    public void test1(){
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
            conn.setAutoCommit(false);
            Statement stat=conn.createStatement();
            Long startTime=System.currentTimeMillis();
            for(int i=0;i<10000;i++){
                stat.execute("insert into test1 values("+i+")");
            }
            long endTime=System.currentTimeMillis();
            System.out.println(endTime-startTime);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
    public void test2(){
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
            conn.setAutoCommit(false);
            PreparedStatement stat = conn.prepareStatement("insert into test1 values(?)");
            Long startTime=System.currentTimeMillis();
            for(int i=0;i<10000;i++){
                stat.setObject(1, i);
                stat.execute();
            }
            conn.commit();
            long endTime=System.currentTimeMillis();
            System.out.println(endTime-startTime);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
    public void test3(){
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
            conn.setAutoCommit(false);
            PreparedStatement stat = conn.prepareStatement("insert into test1 values(?)");
            Long startTime=System.currentTimeMillis();
            for(int i=0;i<10000;i++){
                stat.setObject(1, i);
                stat.addBatch();
            }
            stat.clearBatch();
            stat.executeBatch();
            conn.commit();
            long endTime=System.currentTimeMillis();
            System.out.println(endTime-startTime);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
   
    public static void main(String [] aaa) throws Exception{
        new test3().test1();
        new test3().test2();
        new test3().test3();
    }

}


通过上面这个实验
结果是
Statement  3672
PreparedStatement 2391
PreparedStatement+批处理 15

效率显而易见,在大数据的情况下 第3种相当的效率


查看评论
    更多评论(0)

    移动版|桌面版

    ©1999-2012, CSDN.NET, All Rights Reserved

    猜你喜欢

    转载自cuishuangjia.iteye.com/blog/2175596
    今日推荐