实验3种JDBC插入数据效率
importjava.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");
Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
conn.setAutoCommit(false);
Statementstat=conn.createStatement();
LongstartTime=System.currentTimeMillis();
for(int i=0;i<10000;i++){
stat.execute("insertinto test1 values("+i+")");
}
longendTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
} catch (ClassNotFoundExceptione) {
// TODO Auto-generated catchblock
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catchblock
e.printStackTrace();
}
}
public void test2(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
conn.setAutoCommit(false);
PreparedStatement stat =conn.prepareStatement("insert into test1 values(?)");
LongstartTime=System.currentTimeMillis();
for(int i=0;i<10000;i++){
stat.setObject(1, i);
stat.execute();
}
conn.commit();
longendTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
} catch (ClassNotFoundExceptione) {
// TODO Auto-generated catchblock
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catchblock
e.printStackTrace();
}
}
public void test3(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connectionconn=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();
longendTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
} catch (ClassNotFoundExceptione) {
// TODO Auto-generated catchblock
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catchblock
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种相当的效率