java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
北九道 2016-04-12 04:07:01 String sql = "insert into stat_clb_data " +
"values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?," +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
PreparedStatement prep = conn.prepareStatement(sql);
for(int rowIndex = 5;rowIndex<=lastRowNum;rowIndex++){
for(int index = 4;index<=lastCellNum;index++){
prep.setString(1, date);
prep.setString(2, zmlm);
prep.setString(3,bblx);
prep.setFloat(4, rowIndex-5);
prep.setFloat(index+1,(float)st.getRow(rowIndex).getCell(index).getNumericCellValue());
if(index==lastCellNum){
prep.setFloat(index+2,0);
prep.setFloat(index+3,0);
prep.setFloat(index+4,0);
prep.setFloat(index+5,0);
prep.setFloat(index+6,0);
prep.setFloat(index+7,0);
}
}
prep.executeUpdate();
}
Exception:
java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1821)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3571)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at mor.clb.bl.DataInput.writeInDatabase(DataInput.java:51)
at mor.clb.Console.setData(Console.java:112)
at mor.clb.Console.main(Console.java:855)
注:数据库中前三个字段属性为varchar2,其他的为number ,for循环中遍历数据为54个,数据库总列数为64个