executeBatch() 事务 批量执行sql

chenhongwei0924 2010-07-15 11:47:56


Connection connection = OracleDB.getConn(ip, user, password);
if (connection == null) {
return;
}
Statement statement = null;
File file = new File("D:\\test.sql");

List<String> sqlList = loadSql(file);
try {
connection.setAutoCommit(false);
statement = connection.createStatement();
for (String sql : sqlList) {
System.out.println("sql : " + sql);
statement.addBatch(sql);
}
int[] rows = statement.executeBatch();
System.out.println("Row count:" + Arrays.toString(rows));

} catch (Exception ex) {
connection.rollback();
connection.setAutoCommit(true);
System.err.print(ex.getMessage());
} finally {
OracleDB.closeAll(connection, statement, null);
}







create table TEST_DELETE
(
ADDRESS VARCHAR2(50) not null,
NAME VARCHAR2(50) not null,
SCORE NUMBER not null
)
;
alter table TEST_DELETE
add constraint TEST_PK primary key (ADDRESS, SCORE);


insert into TEST_DELETE (ADDRESS, NAME, SCORE)
values ('Los Angeles', 'kobe', 100);
insert into TEST_DELETE (ADDRESS, NAME, SCORE)
values ('Los Angeles', 'Atai', 23);
insert into TEST_DELETE (ADDRESS, NAME, SCORE)
values ('Italy', 'kobe', 23);
insert into TEST_DELETE (ADDRESS, NAME, SCORE)
values ('Los Angeles', 'Plou', 95);
insert into TEST_DELETE (ADDRESS, NAME, SCORE)
values ('Espana', 'Plou', 95);






executeBatch() 批量执行sql,假如insert 出现异常,为什么create 不回滚事务




Class.forName("oracle.jdbc.driver.OracleDriver");


return DriverManager.getConnection(url,user,password);






...全文
424 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanhgjc 2011-08-23
  • 打赏
  • 举报
回复
在java中有多少种从处理SQL事务方式,哪个大虾帮忙解答一下
iihero_ 2010-07-16
  • 打赏
  • 举报
回复
ddl语句在oracle中无法回滚。
minitoy 2010-07-16
  • 打赏
  • 举报
回复
ddl默认自动commit的,事务里不能含ddl语句
shixianwei 2010-07-15
  • 打赏
  • 举报
回复
应该是ddl和dml的区别吧能回滚的只能是dml吧不知道顶一下看高手解答

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧