亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于Parameter index out of range (0 < 1 ).異常,通常是哪里出錯了?

關于Parameter index out of range (0 < 1 ).異常,通常是哪里出錯了?

Change___ 2016-06-20 10:50:01
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 可以作為靜態的,最后在拼接


查看完整回答
1 反對 回復 2016-06-20
  • Change___
    Change___
    我在測試類里面給name,sex,type1都賦了值,用hero.setName("***");賦的值,是邏輯有問題嗎?
  • 綠洲仙人球
    綠洲仙人球
    建議你把最后的sql和list都打印出來,應該是?和賦值的個數不匹配,這樣一對比就明顯了
  • 1 回答
  • 0 關注
  • 2118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號