String sqlstr="insert into jp117 (a,b,c,d) values ('11699','2786','923','696'),('11699','2787','923','696')";
con.prepareStatement(sqlstr,PreparedStatement.RETURN_GENERATED_KEYS);
Statement stmt=(Statement) con.createStatement();
stmt.executeUpdate(sqlstr);
无法插入数据??
可是语句放在mysql 里执行是可以插入的
con.prepareStatement(sqlstr,PreparedStatement.RETURN_GENERATED_KEYS);
Statement stmt=(Statement) con.createStatement();
stmt.executeUpdate(sqlstr);
无法插入数据??
可是语句放在mysql 里执行是可以插入的
解决方案 »
- spring+struts+hibernate出现的错误 这是什么情况
- 新手求问,为什么我照书上的打还出错,跟书上是一模一样的啊
- 关于hibernate树状表的映射
- 调用webservice时的Server.userException解决方法求助~~~在线等
- UBB的问题
- 初学者问题 求一个 完整的 java 读写 xml文件 的代码 在线等待
- hibernate的问题,请大家进来看看!
- 请问CMR到底是什么东西啊?!
- 请问JBuilder 6.0中的J2EE版本号是多少?
- 大婶们,小弟求教一个关于多线程的问题啊
- 启动android模拟器 一直停留在ANDROID_界面 ,那个下划线一直闪,,
- 【求助】关于JSP传参数的问题
pstmt = conn.prepareStatement("insert into loadtest (id, data) values (?, ?)");
for (int i = 1; i <= COUNT; i++) {
pstmt.clearParameters();
pstmt.setInt(1, i);
pstmt.setString(2, DATA);
pstmt.execute();
}MyISAM:246.6秒、InnoDB:360.2秒方法2: 使用事务,不自动commitconn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
conn.setAutoCommit(false);
pstmt = conn.prepareStatement("insert into loadtest (id, data) values (?, ?)");
for (int i = 1; i <= COUNT; i++) {
pstmt.clearParameters();
pstmt.setInt(1, i);
pstmt.setString(2, DATA);
pstmt.execute();
if (i % COMMIT_SIZE == 0) {
conn.commit();
}
}
conn.commit();InnoDB:31.5秒方法3: executeBatchconn = DriverManager.getConnection(JDBC_URL + "?rewriteBatchedStatements=true",
JDBC_USER, JDBC_PASS);
conn.setAutoCommit(false);
pstmt = conn.prepareStatement("insert into loadtest (id, data) values (?, ?)");
for (int i = 1; i <= COUNT; i += BATCH_SIZE) {
pstmt.clearBatch();
for (int j = 0; j < BATCH_SIZE; j++) {
pstmt.setInt(1, i + j);
pstmt.setString(2, DATA);
pstmt.addBatch();
}
pstmt.executeBatch();
if ((i + BATCH_SIZE - 1) % COMMIT_SIZE == 0) {
conn.commit();
}
}
conn.commit();InnoDB:5.2秒上面的使用时必须
1)rewriteBatchedStatements=true
2)useServerPrepStmts=true方法4:先LOAD再COMMITconn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS);
conn.setAutoCommit(false);
pstmt = conn.prepareStatement("load data local infile '' "
+ "into table loadtest fields terminated by ','");
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= COUNT; i++) {
sb.append(i + "," + DATA + "\n");
if (i % COMMIT_SIZE == 0) {
InputStream is = new ByteArrayInputStream(sb.toString().getBytes());
((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(is);
pstmt.execute();
conn.commit();
sb.setLength(0);
}
}
InputStream is = new ByteArrayInputStream(sb.toString().getBytes());
((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(is);
pstmt.execute();
conn.commit();这个最快4.6秒
希望你参考这些,能帮助到你。