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种相当的效率
实验3种JDBC插入数据效率
猜你喜欢
转载自cuishuangjia.iteye.com/blog/2175596
今日推荐
周排行
更多评论(0)