public int addCourseTime(CourseTimeBean ctb){
int csh_no=ctb.getCsh_no();
int csh_id=ctb.getC_id();
String csh_start_time=ctb.getCsh_start_time();
String csh_due_time=ctb.getCsh_due_time();
int csh_numbers=ctb.getCsh_numbers();
int csh_minutes=ctb.getCsh_minutes();
String sql="insert into course_schedule values(?,?,to_date(?,'yyyy-MM-dd hh-mi-ss'),to_date(?,'yyyy-MM-dd hh-mi-ss'),?,?)";
Connection conn=DButil.getConn();
PreparedStatement pstm=null;
int result=0;
try {
pstm=conn.prepareStatement(sql);
pstm.setInt(1,csh_no);
pstm.setInt(2, csh_id);
pstm.setString(3,csh_start_time);
pstm.setString(4,csh_due_time);
pstm.setInt(5, csh_numbers);
pstm.setInt(6, csh_minutes);
result =pstm.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DButil.free(pstm, conn);
return result;
}
}
java.sql.SQLException: ORA-01008: 并非所有变量都已绑定
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:796)
at cn.com.courseInfoDao.CourseTimeInfoDao.addCourseTime(CourseTimeInfoDao.java:60)
Java中执行sql语句总是报这个错误,在网上查了一些原因,都说是因为sql语句标点符号有错误,检查了很长时间没有找到符号错误。把sql拿到PL/SQL中执行可以通过。最后发现在result =pstm.executeUpdate(sql);
这句中多加了sql ,在执行时是不需要传sql的,找了半天的错误,原来在这里。