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)