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;}這是我的代碼,檢查不出哪里錯(cuò)了,是JDBC連接的問題。
1 回答
已采納

綠洲仙人球
TA貢獻(xiàn)39條經(jīng)驗(yàn) 獲得超47個(gè)贊
看提示應(yīng)該是調(diào)用越界問題,分析代碼的邏輯,如果傳入的hero對(duì)象的值都為空,那么sql語句為
insert into hero(name) values(?)
但是list中并沒有name的值,導(dǎo)致?沒有賦值,執(zhí)行的時(shí)候肯定會(huì)報(bào)錯(cuò)啦
建議修改代碼邏輯,動(dòng)態(tài)的去拼接sql中的字段值和value值,insert into hero 可以作為靜態(tài)的,最后在拼接
添加回答
舉報(bào)
0/150
提交
取消