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 3672PreparedStatement 2391PreparedStatement+批處理 15效率顯而易見,在大資料的情況下 第3種相當的效率