PreparedStatement的executeBatch()方法为什么执行不过去

dxqrr 2011-10-03 12:27:32
public void addStudent(List<Student> students) {
Connection conn = DB.getConnection();
String sql = "insert into student values(?, ?, ?)";
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
conn.setAutoCommit(false);
for(int i=0; i<students.size(); i++) {
Student s = students.get(i);
pstmt.setInt(1, s.getId());
pstmt.setString(2, s.getName());
pstmt.setInt(3, s.getAge());
pstmt.addBatch();
}
pstmt.executeBatch();// 在此卡住,没有出现异常,但就是不动
conn.commit();
conn.setAutoCommit(true);

} catch (SQLException e) {
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
DB.close(pstmt);
DB.close(conn);
}
}
...全文
555 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxqrr 2011-10-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 niuniu20008 的回复:]

怎么写了这么多的conn.setAutoCommit(true);
楼主知道conn.setAutoCommit(true);
是什么意思吗?楼主把conn.setAutoCommit(true);
全部去掉。如果要有程序控制事物,必须是conn.setAutoCommit(false);而且程序必须调用commit或者rollback方法。因此,只需在开始写一次conn.setAutoC……
[/Quote]
对啊,我这不是事务完成之后,回复现场么
dxqrr 2011-10-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 abcd_0000 的回复:]

把这句SQL:
Java code
String sql = "insert into student values(?, ?, ?)";

换成:
Java code
String sql = "insert into student(id,name,age) values(?, ?, ?)";
[/Quote]
感谢你的回答,我想应该不是这个问题吧
dxqrr 2011-10-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 licip 的回复:]

把这个 try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
e.p……
[/Quote]
不是异常的问题啊,在此之前就已经卡住了,并没有跑出异常
Fenglee2008 2011-10-03
  • 打赏
  • 举报
回复
ooooooooooooooooooooooooooooooooooooooooo
niuniu20008 2011-10-03
  • 打赏
  • 举报
回复
怎么写了这么多的conn.setAutoCommit(true);
楼主知道conn.setAutoCommit(true);
是什么意思吗?楼主把conn.setAutoCommit(true);
全部去掉。如果要有程序控制事物,必须是conn.setAutoCommit(false);而且程序必须调用commit或者rollback方法。因此,只需在开始写一次conn.setAutoCommit(false)就可以
神探狄仁杰 2011-10-03
  • 打赏
  • 举报
回复
把这句SQL:
String sql = "insert into student values(?, ?, ?)";

换成:
String sql = "insert into student(id,name,age) values(?, ?, ?)";
licip 2011-10-03
  • 打赏
  • 举报
回复
把这个 try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
换为:
e.printStackTrace();
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
看看异常的信息吧。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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