各位:我想试验java数据库事务,在设置connection.setAutoCommit(false)后,为什么不调用commit()也能提交?并且在其中一个更新数据操作有异常时,rollback()也不起作用,我使用的是mysql数据库(5.x).
解决方案 »
- javac能通过,可是java时却出现Exception in thread "main" java.lang.NoSuchMethodError:main这样
- 如何制作java更新包
- 中文操作系统下,使用"5 \n 6"输出的结果是“5”+回车+“6” 可是在英文环境下面操作系统不认\n 请问应该如何实现呢?
- 如何在Console模式下输入一个数字给变量
- every body 400分送出一谢大家
- 哪里有电子版的《java2核心技术》呀?
- 拜托各位结贴时,选择是否提交FAQ时请注意一下!!!!
- 取值?
- 报表打印
- 现在手头没有书,谁有Java存取访问Oracle数据库的例子?
- 如何控制文本框内只能输入半角英文数字
- 使用jdom包时写xml文件的格式问题
try {
if (conn != null) {
conn.setAutoCommit(flag);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void commit() {
try {
if (conn != null) {
conn.commit();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
try{
// 批处理 start2
Connection conn = dbm.conn();
Statement stmt = conn.createStatement();String getListSize = request.getParameter("listSize");
String[] id = request.getParameterValues("id");
String[] userName = request.getParameterValues("userName");
String[] passWord = request.getParameterValues("passWord");
int listSize = java.lang.Integer.parseInt(getListSize);
// 事务处理1
dbm.setAutoCommit(false);
// 事务处理1结束
for (int i = 0; i < listSize; i++) {
String sql = "UPDATE userInfo set userName='" + userName[i]
+ "',passWord='" + passWord[i] + "' where id='" + id[i]
+ "'";
stmt.addBatch(sql);
}
//执行并返回对数据库影响的行数
int[] counts=stmt.executeBatch();
// for (int i = 0; i < counts.length; i++) {
// System.out.println("counts[]=" + counts[i]);
// }
// 事务处理2
dbm.commit();
dbm.setAutoCommit(true);
// 事务处理2结束
// 批处理end2}
dbm.setAutoCommit(true);
注释掉,看是否还能进行提交,把自动提交设置成false是不自动提交事务的