1.preparestatement預編譯,預編譯指的是DB的編譯器,會對此sql語句提前編譯。然后將預編譯的結果緩存到數據庫中,下次執行時替換參數直接執行編譯過的語句。
記住:數據庫也是有編譯器的,編譯的是sql執行命令啊 。
所以每次執行sql語句時,如果每次都要數據庫編譯器編譯sql語句,當然很費時。
Connection connection = DBUtils.getInstance().connectDB(); java.sql.PreparedStatement preparestatement = connection.prepareStatement("insert into countip(time,address) values(?,?)");//db編譯器預編譯此sql語句,將編譯結果緩存在數據庫中,下次替換參數直接執行 for(int i = 0;i<100;i++) { preparestatement.setString(1, "12"); preparestatement.setString(2, "21"); } long duration = System.currentTimeMillis()-beginTime;
2.statement是每次都需要數據庫編譯器編譯的。
Connection connection = DBUtils.getInstance().connectDB(); java.sql.Statement statement = connection.createStatement(); for(int i = 0;i<100;i++) { statement.execute("inerst into countip(accessTime,ipAddress) values(15,123)");//每次都會DB編譯器編譯sql語句執行,耗費時間 } long duration = System.currentTimeMillis()-beginTime; System.out.println("持續時間:"+duration);