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
提交
取消