ORA-01008:并非所有变量都已绑定-解决办法

发布时间 2023-09-27 16:53:40作者: HANDHEAD

        近期批量处理数据,后台用JAVA编写,连接Oracle数据库,程序运行报ORA-01008问题。解决这个问题时遇见的坑较多,下面复盘现象、问题提出解决办法,希望能帮到遇见同类问题的你。

调试问题:

后台代码:

   /**
     * 插入操作的封装
     * **/
    public static void insertRow(String sql,List<Object> paraCondition)  {
//        1建立数据库连接
        Connection conn=JDBCUtils.getConnection();
        //2sql传入,传入的参数带变量,将SQL绑定变量处理
        try {
            //3为sql语句赋值
            PreparedStatement pstmt = conn.prepareStatement(sql);
            if(paraCondition!=null && paraCondition.size()>0){
                for(int i=0;i<paraCondition.size();i++){
                    pstmt.setObject(i+1,paraCondition.get(i));
                }
            }
            pstmt.execute(sql);//执行SQL
        }catch (SQLException e){
            e.printStackTrace();
        }
    }

解决办法:

1、要求绑定变量sql中的个数与paraCondition中的个数要一致。

2、paraCondition处理的有问题,不要有NULL值

3、注意上面代码“//执行SQL”中传入了参数“sql”,注意此处不要传参。

我遇见的坑是这三个,希望帮到寻觅原因的你。