|
02.03.2012, 13:28:20
#37688203
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
|
Почему-то при выдает ошибку недопустимый индекс столбца, хотя нумерация вроде бы
правильная
вот исходник
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
String big ="insert into fc_studentorders(orderid, ordernumber, orderdate,ordertype,recordid, docdate, grouporderid,active)( "
+"select sq_studentorders.nextval orderid, ? ordernumber,to_date('?','yyyy-MM-dd') orderdate,? ordertype, "
+"sig.studentid recordid,to_date('?','yyyy-MM-dd') docdate,? grouporderid,? active "
+" from fc_studentsingroups sig "
+" where to_date('?','yyyy-MM-dd') between sig.begindate and sig.enddate and sig.groupid in (?)) ";
System.out.println("big is "+big );
PreparedStatement pst=conn.prepareStatement(big);
pst.setString(1, ordernumber);
DBUtil.setDate(pst, 2, orderdate);
pst.setInt(3, 34);
DBUtil.setDate(pst, 4, orderdate);
DBUtil.setLong(pst, 5, grouporderid);
pst.setInt(6, 0);
DBUtil.setDate(pst, 7, orderdate);
String grcode=Arrays.toString(groups);
grcode=grcode.replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("'", "");
pst.setString(8, grcode);
pst.executeQuery();
вот методы set date Set long
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
public static void setDate(PreparedStatement st, int fieldNo, java.util.Date value) throws SQLException {
if (value == null)
st.setNull(fieldNo, Types.TIMESTAMP);
else
st.setDate(fieldNo, new java.sql.Date(value.getTime()));
}
public static void setLong(PreparedStatement st, int fieldNo, Number value) throws SQLException {
if (value == null)
st.setNull(fieldNo, Types.DECIMAL);
else
st.setLong(fieldNo, value.longValue());
}
вот логи
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Connection.prepareStatement(insert into fc_studentorders(orderid, ordernumber, orderdate,ordertype,recordid, docdate, grouporderid,active)( select sq_studentorders.nextval orderid, ? ordernumber,to_date('?','yyyy-MM-dd') orderdate,? ordertype, sig.studentid recordid,to_date('?','yyyy-MM-dd') docdate,? grouporderid,? active from fc_studentsingroups sig where to_date('?','yyyy-MM-dd') between sig.begindate and sig.enddate and sig.groupid in (?)) ) returned net.sf.log4jdbc.PreparedStatementSpy@17d57d6
(jdbc.audit 156 ) 849. PreparedStatement.setString(1, "000000") returned
(jdbc.audit 156 ) 849. PreparedStatement.setDate(2, 2012-02-14) returned
(jdbc.audit 156 ) 849. PreparedStatement.setInt(3, 34) returned
(jdbc.audit 156 ) 849. PreparedStatement.setDate(4, 2012-02-14) returned
(jdbc.audit 156 ) 849. PreparedStatement.setLong(5, 5461) returned
(jdbc.audit 93 ) 849. PreparedStatement.setInt(6, 0)
java.sql.SQLException: Недопустимый индекс столбца
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.OraclePreparedStatement.setIntInternal(OraclePreparedStatement.java:3970)
at oracle.jdbc.driver.OraclePreparedStatement.setInt(OraclePreparedStatement.java:3961)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setInt(DelegatingPreparedStatement.java:116)
at net.sf.log4jdbc.PreparedStatementSpy.setInt(PreparedStatementSpy.java:420)
at com.ieml.servlets.faculty.SuccessfulCompletitionAddGroupsServlet.doPost(SuccessfulCompletitionAddGroupsServlet.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
|
|
|