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(); } } } }