“ORA-01008:并非所有变量都绑定”错误

2024-04-20

我正在使用以下方法通过使用 jdbc 计算工资单,但“ORA-01008:并非所有变量都绑定”错误未删除。

有什么想法吗?

我正在使用以下代码

public double getPayroll(){
            ResultSet rs = null;
            ResultSet rs1 = null;
            ResultSet rs2 = null;

            Connection conn = null;
            PreparedStatement pstmt = null;
            try {
                    conn = getDBConnection();
                    double dailyPay=0,basicPay=0,payroll2=0;
                    int houseRent=0,convAllow=0,noOfPresents=0,empId=0;
                    String q = "select e_id from employee";
                    pstmt = conn.prepareStatement(q);
                    rs = pstmt.executeQuery();
                    while (rs.next()) {
                        empId=rs.getInt(1);
                        String q1 = "select count(att_status) from attendance where att_status='p'";
                        pstmt = conn.prepareStatement(q1);
                        rs1 = pstmt.executeQuery(q1);
                        while(rs1.next()){
                            noOfPresents=rs1.getInt(1);
                            String q2 = "select e_salary,e_house_rent,e_conv_allow from employee where e_id=?";
                            pstmt = conn.prepareStatement(q2);
                            pstmt.setInt(1,empId);
                            rs2 = pstmt.executeQuery(q2);
                            while(rs2.next()){
                                dailyPay=rs2.getInt(1)/22;
                                houseRent=rs2.getInt(2);
                                convAllow=rs2.getInt(3);
                                basicPay=dailyPay*noOfPresents;
                                payroll2+=basicPay+houseRent+convAllow;
                            } 
                        }
                    }
                    return payroll2;
             }catch (Exception e) {
              e.printStackTrace();
              return 0.0;
            } finally {
              try {
                rs.close();
                pstmt.close();
                conn.close();
              } catch (Exception e) {
                e.printStackTrace();
              }
            }
} 

你的问题在这里:

rs2 = pstmt.executeQuery(q2);

你正在告诉PreparedStatement执行 SQLq2,而不是执行之前准备的SQL。这应该只是:

rs2 = pstmt.executeQuery();

这是一个相当常见的错误,主要是由于糟糕的类设计造成的java.sql.Statement及其亚型。

正如@RMT 指出的,你在这里犯了同样的错误:

rs1 = pstmt.executeQuery(q1);

这并不重要,因为没有占位符q1,因此 SQL 按原样执行。但它仍然是错误的。

最后,您应该考虑致电close()在第一个PreparedStatement,在重新分配之前pstmt变量到另一个。如果不这样做,您就有泄漏的风险。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“ORA-01008:并非所有变量都绑定”错误 的相关文章

随机推荐

  • jmeter恒定视频流

    我正在使用 Jmeter 来加载测试视频流 我可以传递登录信息 但我需要让 Jmeter 在提供视频流的页面上 保持 我怎样才能做到这一点 我已经设置了 cookie 管理器 如果视频流不在您的服务器上 您根本不需要测试它 例如 如果您的网
  • 本地化系统生成的隐私警报消息 iOS UIAlertView Xcode

    我正在使用 Xcode Swift 1 1 开发一个应用程序 并使用 iOS 7 1 和 iOS 8 1 模拟器对其进行测试 该应用程序允许用户访问他们的照片库 但在此之前 iOS 会显示隐私警报消息标题 以英语请求用户许可 App Nam
  • 使用 SearchView android studio 工具栏中的左侧空间

    我正在尝试添加一个简单的SearchView到我的应用程序中的工具栏 除了布局之外 一切都工作正常 之间有这个 空间 NavigationDrawer图标和SearchView 如果我设置了标题 则空间将填充该字符串 否则为空 空字符串 标
  • 简化平面数组或多维数组的循环

    通常 我会有一个数组来保存一组值 每个值我都需要处理 有时 数组仅保存单个集合 在这种情况下 每个值都需要经过该过程 其他时候 数组将保存许多集合 在这种情况下 每个值都将是一个数组 并且这些数组中的每个值都需要进行处理 这是一个例子 fo
  • 使用 MVVM 动态添加时给予 TabItem 焦点

    所有 我添加一个TabItem to a TabControl动态地使用 MVVM 新的TabItems加载良好 但我希望添加的选项卡自动获得焦点 也就是说 我添加了一个选项卡 但我不想必须单击该选项卡才能获得焦点 XAML 的TabCon
  • 如何将 CSS 样式仅应用于文本

    我正在尝试将样式应用于 HTML 文本之类的内容 我想要的基本上是 我得到的基本上是 正如您所看到的 第一行是缩进的 但其他行没有缩进 到目前为止 我已经将文本包含在 span 它嵌套在一个 div slide text text back
  • 作为 Windows 服务运行时,.Net Core 6 Worker Service 不写入日志

    我使用 C Net Core 6 Visual Studio 2022 创建了一个辅助服务 如果通过 Visual Studio 运行或直接从 Windows 资源管理器 PowerShell 启动 它会按预期写入日志文件 但是 当作为 W
  • 如何强制子进程刷新标准输出缓冲区?

    平台 Windows 8 1 IDE vs2013 使用c c 进程 A 使用管道重定向读取子进程的标准输出 但子进程不会在 printf 之后调用 fflush 以在子进程运行结束之前处理 A 无法从管道读取任何内容 ps 我有子进程的源
  • 具有可定制内容的 JSF 迭代复合组件

    我想创建一个复合组件 可以将迭代元素的实际布局传递给复合组件 这是一个简化的示例并且有效
  • 如何访问分区 Athena 表的子目录中的数据

    我有一个 Athena 表 每天都有一个分区 其中实际文件按小时位于 子目录 中 如下所示 s3 my bucket data 2019 06 27 00 00001 json s3 my bucket data 2019 06 27 00
  • python中字典列表中的top-k

    有没有一种简单的方法来执行此示例中的最大 k 个键 值对 s1 val 0 s2 val 10 s3 val 5 s4 val 4 s5 val 6 s6 val 7 s7 val 3 shapelets s1 s2 s3 s4 s5 s6
  • 如何通过光标url缩小图像的大小?

    我有一张尺寸为 105x105 的图像 我使用以下 CSS 脚本将其用作光标 class 1 child 1 cursor url theBell png 20 20 auto 当我将鼠标移到元素上时会出现图像 但它太大了 我不知道如何减小
  • 在 C# 中动态更改命名空间

    我想做这样的事情 如果定义了 DEBUG 则命名空间为 Test 或者命名空间为 TestB 请参阅下面的示例代码 我可以这样做吗 或者您有更好的想法来实现这一目标吗 提前致谢 if DEBUG SomekindofAttribute Na
  • 使用 Turbolinks 渲染同一页面时无法使用 Flash

    我试图在点击更新端点后显示闪存消息 我想让用户保持在同一页面上并告诉他信息已更新 我启用了 Turbolink 我的操作如下 def update form Form find params id if form update form p
  • “提供程序包”未正确加载

    VS 2013 专业版 版本 12 0 31101 00 更新 4 突然间 每当我尝试打开一个项目 MVC 项目或 Python 项目 时 我都会得到 ProviderPackage 包未正确加载 问题 可能是由配置更改或安装引起的 另一个
  • Vue 3 - 如何将组件和混入与根组件一起包含?

    我尝试将语法从 Vue 2 转换为 Vue 3 但我不确定如何包含mixins and 成分 如果您在 Vue 2 中看到以下代码 import App from App vue const app new Vue mixins globa
  • 模态内部的不同输出(Laravel 5.4)

    我的 trips blade php 中有这段代码 问题是当我的 t gt employees 位于模态之外时 我检索所有员工 但是当我将 t gt employees 放入模态中时 我只能检索 1 个数据 我无法找出这种情况下的任何错误
  • 如何清除ID未知的Interval?

    假设有人 邪恶 给我们设置了一个计时器setInterval 但我们不知道它的 ID 我们没有 setInterval 返回的对象的引用 也没有它的值 function setInterval function console log pw
  • Visual Studio:在“从程序集中添加工具箱项目”上停留了 11 个小时

    昨晚卸载并重新安装了 Visual Studio 2015 但安装并更新后 一旦我打开软件 它说 Adding toolbox items from assembly C Program Files x86 Microsoft SDK s
  • “ORA-01008:并非所有变量都绑定”错误

    我正在使用以下方法通过使用 jdbc 计算工资单 但 ORA 01008 并非所有变量都绑定 错误未删除 有什么想法吗 我正在使用以下代码 public double getPayroll ResultSet rs null ResultS