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());
--------------
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());
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开始??
先试一下一个字段的情况,然后两个...
String sql = "insert into productinfo values (?,?,?,?)";
你的productinfo表的结构是怎样的,是不刚好5个字段,有没有自动类型的字段?你这样试试:
String sql = "insert into productinfo(F1,F2,F3,F4,F5) values ( ? , ? , ? , ? , ?)";
其中Fn是你对应的字段名.