JDBC错误:java.sql.SQLException: ORA-01008: 并非所有变量都已绑定

本文详细解析了一种常见的Java中SQL执行错误“ORA-01008:并非所有变量都已绑定”,并分享了解决该问题的具体步骤。错误通常由于PreparedStatement设置参数时的疏忽引起,文章通过实例展示了如何正确使用PreparedStatement避免此类错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的,找了半天的错误,原来在这里。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值