我的程序中是这样的
try{
for(...){
...
stmt.setString(3, "01035");
...
stmt.addBatch()
}(Exception e) {
e.printStackTrace();
}
}
stmt.executeBatch();
stmt.close();
"01035"是一个比第3列长的字符串,为什么我的第一个异常没有捉到,而在stmt.executeBatch()的时候也不报错,但数据库就是插不进去
如何才能扑捉到这个异常
try{
for(...){
...
stmt.setString(3, "01035");
...
stmt.addBatch()
}(Exception e) {
e.printStackTrace();
}
}
stmt.executeBatch();
stmt.close();
"01035"是一个比第3列长的字符串,为什么我的第一个异常没有捉到,而在stmt.executeBatch()的时候也不报错,但数据库就是插不进去
如何才能扑捉到这个异常
解决方案 »
- 求一道笔试题,统计页面访问次数?
- 讨论一个方法
- 大虾!谁能帮我把这段jsp代码翻译成PHP的!新手求助!谢谢!!
- hibernate插入数据库时自增id值为null,新产生一个VO往数据库insert写入时,这个VO的id值总是为null,怎么样在它写入数据库后,取出表中的id
- 妹子求助一道编程题,想了半天完全没思路
- myeclipse+jboss4+oracle10i_jdk1.6,报错 not support oracle driver 1.0
- java的基础问题,谢谢!!
- 请教java与oracle的连接问题
- 能否提供一个struts简单数据库操作的例子,struts in action的例子和英文看的太累了 不明白
- Where can i fand a downloadable J2EE's Class Hierarchy Diagrams
- JavaScript 判断一个月有几个星期
- 自定义标签tld文件都有几个版本?每个属性都是什么意思呢?
是你没想明白问题是怎么发生的我个人认为:
Statement的setString貌似是给某些sql语句用来注入变量参数的就算是setString是为了插入的
但是addBatch的时候你根本没有任何的Batch可用啊
每个Batch是一个sql语句
而不是说你set的数字或字符串如果你想插入多个
并且验证事务的原子性的话1、启用事务
2、写sql语句,并addBatch()
3、把你的for的代码写出来
我感觉那里可能会有问题
String[] fields = LINE_KEY.split(fieldLimitChar,-1);
try{
...
stmt.setString(3, fields[2].trim());
...
stmt.addBatch()
}(Exception e) {
e.printStackTrace();
}
我的程序就是读取一个文本,拆分每一行数据,然后插到数据库中,我debug了一下,程序根本没有走进上边的异常,而是在stmt.executeBatch()的时候报的异常
stmt.close();这两个语句,你没有放在try里,而是放在了try之后,所以就不能catch了。