请教以下代码问题!急啊~~~~
public boolean insertCab(List list,int num){
boolean bRet=false;
Connection conn =new DBConnection().getConnection();
try{
Statement stmt =conn.createStatement();
for(int i=0;i <num;i++){
Keycab cab=(Keycab)list.get(i);
String sql= "insert into kms_cabinfo values( "+cab.getCabid()+ ", "+cab.getMaxofkey()+ ", ' "
+cab.getCabstate()+ " ', ' "+cab.getBstate()+ " ', ' "+cab.getSstate()+ " ', "+cab.getRows()+ ", "
+cab.getCols()+ ") ";
stmt.addBatch(sql);
stmt.executeBatch();
conn.commit();
}
bRet = true;
}catch(Exception ex){
try {
conn.rollback();
} catch (Exception ex2) {
System.err.println( "rollback failed: " + ex2.getMessage());
}
}finally {
}
return bRet;
}
问题是,如果list只有一个对象,此时num=1.这样可以正确写入数据库,而当list含有多个对象的时候,方法只能写入最后一条,而且返回bRet为false,不知道为什么,弄了两天了,还是没有搞定啊,急!!
------解决方案--------------------在for循环里面把i打印出来,还是怀疑你的循环条件有问题。另外stmt.executeBatch();也的确应该写在循环外面。
------解决方案--------------------Statement stmt =conn.createStatement();
你把这句放在sql语句的下面试试,因为可能是每做一次循环要声明一个新的statement对象,要是同一个的话commit()了多少次都是一条对象的吧?
------解决方案--------------------解决了没有,
问题出在哪,我也很想知道.