1.根據自己的電腦開線程數量越多越快。
2.
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class TestDataBase2 { public static void main(String[] args) { Connection conn = null; try { conn = DBUtil.getConnection(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String sql = "insert into ad_log_app(adid, vTime, userId, vValue,tradeFlag,lmCode) values (?,NOW(),?,?,?,?)"; try { PreparedStatement prep = conn.prepareStatement(sql); conn.setAutoCommit(false); long start = System.currentTimeMillis(); for(int i = 0; i < 200; i++){ for (int j = 0; j < 10000; j++) { prep.setInt(1, 81+j); //prep.setDate(2,date); prep.setInt(2, 1001267); prep.setDouble(3, 0.01); prep.setInt(4, 0); prep.setInt(5, 0); // 將預處理添加到批中 prep.addBatch(); }// 預處理批量執行 prep.executeBatch(); prep.clearBatch(); conn.commit(); } long end = System.currentTimeMillis(); System.out.print("total: "); System.out.println(end - start); } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn); } } }
DBUTil
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; /** * 封裝 數據庫的連接過程 * 可以使用連接數據庫的過程被重用 * */ public class DBUtil { //聲明屬性 private static String driver; private static String url; private static String user; private static String pwd; //利用靜態代碼塊,從配置文件中加載屬性值 static{ Properties config = new Properties(); try { config.load(DBUtil.class.getClassLoader().getResourceAsStream("ssgm.properties")); } catch (Exception e) { e.printStackTrace(); System.out.println("配置文件讀取錯誤"); } //初始化屬性 //將key對應的value取出來作為jdbc屬性的值 driver=config.getProperty("jdbc.driverclass"); url=config.getProperty("jdbc.url"); user = config.getProperty("jdbc.username"); pwd = config.getProperty("jdbc.password"); } /** * 封裝數據庫的連接過程 * 封裝: 數據庫驅動注冊和連接過程 * 返回值是Connection 代表數據庫的連接結果 * 是Connection類型對象。 */ public static Connection getConnection() throws SQLException { try { Class.forName(driver);//需要處理異常 Connection conn = DriverManager .getConnection(url, user, pwd); return conn;//返回建立的連接對象 } catch (ClassNotFoundException e) { e.printStackTrace(); throw new SQLException("木有找到驅動",e); } } /** * 封裝 關閉數據庫連接的過程 * @param conn 被關閉的連接對象 */ public static void close(Connection conn){ if(conn!=null){//避免了空指針異常 try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }