public int doAdd(HeroBean hero) throws Exception { int rs=0; List list=new ArrayList(); StringBuilder sb1=new StringBuilder("insert into hero(name,"); StringBuilder sb2=new StringBuilder("values(?,"); if(hero.getName()!=null&&hero.getName().length()>0){ list.add(hero.getName()); } if(hero.getSex()!=null){ sb1.append("sex,"); sb2.append("?,"); list.add(hero.getSex()); } if(hero.getType1()!=null){ sb1.append("type1,"); sb2.append("?,"); list.add(hero.getType1()); } sb1.deleteCharAt(sb1.length()-1); sb2.deleteCharAt(sb2.length()-1); sb2.append(")"); sb1.append(")"); String sql=sb1.append(sb2).toString(); try{ PreparedStatement psmt=null; conn=db.getConn(); psmt=conn.prepareStatement(sql); for(int i=0;i<list.size();i++){ psmt.setObject(i,list.get(i)); } rs=psmt.executeUpdate(); psmt.close(); }catch(Exception e){ throw e; }finally{ if(conn!=null){ conn.close(); } } return rs;}这是我的代码,检查不出哪里错了,是JDBC连接的问题。
1 回答
已采纳
绿洲仙人球
TA贡献39条经验 获得超47个赞
看提示应该是调用越界问题,分析代码的逻辑,如果传入的hero对象的值都为空,那么sql语句为
insert into hero(name) values(?)
但是list中并没有name的值,导致?没有赋值,执行的时候肯定会报错啦
建议修改代码逻辑,动态的去拼接sql中的字段值和value值,insert into hero 可以作为静态的,最后在拼接
添加回答
举报
0/150
提交
取消