赞
踩
使用mysql驱动mysql-connector-java-5.1.3,通过wireshark抓包分析结果:
1.使用addBatch(sql):
Class.forName("com.mysql.jdbc.Driver");//指定连接类型 Connection con = DriverManager.getConnection(url, username, password); PreparedStatement pst = con.prepareStatement(""); for (int i = 0; i < 10; i++) { StringBuilder sql = new StringBuilder(); sql.append("INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES("); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("',"); sql.append("'").append(i).append("'"); sql.append(");"); pst.addBatch(sql.toString()); } pst.executeBatch(); pst.close(); con.close();
执行结果:
可以看见其实客户端发送到mysql服务端其实是发送了10次;
1.使用addBatch():
Class.forName("com.mysql.jdbc.Driver");//指定连接类型 Connection con = DriverManager.getConnection(url, username, password); String sql = "INSERT INTO extenal_studentcj(grade,clazz,zkzh,NAME,scoretext,times) VALUES(?,?,?,?,?,?)"; PreparedStatement pst = con.prepareStatement(sql); for (int i = 0; i < 10; i++) { int idx = 1; pst.setString(idx++, i + ""); pst.setString(idx++, i + ""); pst.setString(idx++, i + ""); pst.setString(idx++, i + ""); pst.setString(idx++, i + ""); pst.setLong(idx++, i); pst.addBatch(); } pst.executeBatch(); pst.close(); con.close();
可见客户端只发送了一次到mysql服务端;3.结论使用mysql进行批量插入的时候,需要使用addBatch(),使用addBatch(sql)性能比较低;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。