请教以下代码问题!急啊~~~~
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()了多少次都是一条对象的吧?
------解决方案--------------------解决了没有, 
 问题出在哪,我也很想知道.