猿问

关于Parameter index out of range (0 < 1 ).异常,通常是哪里出错了?

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连接的问题。

Change___
浏览 2053回答 1
1回答

绿洲仙人球

看提示应该是调用越界问题,分析代码的逻辑,如果传入的hero对象的值都为空,那么sql语句为insert into hero(name) values(?)但是list中并没有name的值,导致?没有赋值,执行的时候肯定会报错啦建议修改代码逻辑,动态的去拼接sql中的字段值和value值,insert into hero 可以作为静态的,最后在拼接
随时随地看视频慕课网APP

相关分类

Java
我要回答