ORA-01008:并非所有变量都已绑定-解决办法
阅读原文时间:2023年09月27日阅读:3

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

调试问题:

后台代码:

/**
* 插入操作的封装
* **/
public static void insertRow(String sql,List 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”,注意此处不要传参。

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