My code is 
--------------
String sql =  "insert into productinfo values ( ? , ? , ? , ? , ?)";
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, newProcInfo.getId().trim());
pStmt.setString(2, newProcInfo.getName().trim());
pStmt.setString(3, newProcInfo.getRetailPrice().trim());
pStmt.setString(4, newProcInfo.getQuantity().trim());
pStmt.setString(5, newProcInfo.getDescription().trim());
---------------
which will generate a exception:
 
java.lang.ArrayIndexOutOfBoundsException: 0
 at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2005)
 at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:1137)
 at app.util.DataManager.addInfo(DataManager.java:244)
 at app.util.DataManager.main(DataManager.java:472)
 
I can't find any problem in the code, and some code like the will run correctly, such as
 
String sql = "update productinfo set "
           + "name = ? ,retailprice = ? "
           + ", quantity = ? , description = ? "
           + "where id = ?";
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, procInfo.getName().trim());
pStmt.setString(2, procInfo.getRetailPrice().trim());
pStmt.setString(3, procInfo.getQuantity().trim());
pStmt.setString(4, procInfo.getDescription().trim()); 
pStmt.setString(5, procInfo.getId().trim());

解决方案 »

  1.   

    pStmt.setString(1, newProcInfo.getId().trim());
    pStmt.setString(2, newProcInfo.getName().trim());
    pStmt.setString(3, newProcInfo.getRetailPrice().trim());
    pStmt.setString(4, newProcInfo.getQuantity().trim());
    pStmt.setString(5, newProcInfo.getDescription().trim());编号是不是从0开始??
      

  2.   

    rrayIndexOutOfBoundsException数组出界异常..
    先试一下一个字段的情况,然后两个...
      

  3.   

    你的数据库表中的ID,是不是定义为 identify 了?如果是,那么数据库会自动处理,不需要插入。这样就只需要插入四个值了。
    String sql =  "insert into productinfo values (?,?,?,?)";
      

  4.   

    问题还是没有解决,因为PreparedStatement的方法中没有能抛出Array..Exception的,所以应该不是PreparedStatment的问题,我想问一下有没有人遇到过相同的问题,怎样才能避免
      

  5.   

    出现java.lang.ArrayIndexOutOfBoundsException: 0异常肯定是有越界的地方,
    你的productinfo表的结构是怎样的,是不刚好5个字段,有没有自动类型的字段?你这样试试:
    String sql =  "insert into productinfo(F1,F2,F3,F4,F5) values ( ? , ? , ? , ? , ?)";
    其中Fn是你对应的字段名.