解决ORA-01008: 并非所有变量都已绑定(详解问题所在)

解决ORA-01008: 并非所有变量都已绑定(详解问题所在)将executeUpdate(sql)或executeQuery(sql)括号中的sql删除。问题代码:publicstaticvoidmain(String[]args)throwsException{Connectionconnection=null;Statementstatement=null;connection=DBHelper.getConnection();Stringsql=”up

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

将executeUpdate(sql)或executeQuery(sql)括号中的sql删除。

问题代码:

public static void main(String[] args) throws Exception{ 
   
        Connection connection = null;
        Statement statement = null;
        connection = DBHelper.getConnection();
        String sql = "update emp set deptno= ? where ename=? ";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1,10);
        preparedStatement.setString(2,"test");
        int i = preparedStatement.executeUpdate(sql); // 增删改
        if (i>0){ 
   
            System.out.println("success");
        }else { 
   
            System.out.println("failure");
        }
        DBHelper.close(statement,connection);
    }

报错信息:

Exception in thread “main” java.sql.SQLException: ORA-01008: 并非所有变量都已绑定

解决:

首先了解:PrepareStatement接口(面向接口编程),prepareStatement对象会预编译sql语句,这样可以防止多次执行sql语句带来的性能大开销。
我们使用占位符 ? 对sql语句进行简化,但与此同时我们需要调用prepareStatement对象的setXxx()方法去设置占位符所相对应的信息。

String sql = "update emp set deptno= ? where ename=? ";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1,10);
        preparedStatement.setString(2,"test");

最后,我们通过prepareStatement调用excuteUpdate()或excuteQuery()方法分别进行返回增删改的行数或返回查询的Result结果集。

注意:这里不需要将sql传入excuteUpdate()或excuteQuery()小括号中。这里也是问题所在。
原因:很简单,你直接把String sql = “update emp set deptno= ? where ename=? “;传给增删改查方法,?它无法识别。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196364.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • rocketmq负载均衡机制_rocketmq topic

    rocketmq负载均衡机制_rocketmq topicProducer发送消息时,会首先获取Topic路由信息(通过本地+注册中心拉取),RocketMQ的架构里有多个Broker服务器,而消息队列也会存在于多个Broker服务器里,所以就需要负载均衡策略来将流量尽可能均匀的打到所有服务器上。本章节就介绍一下RocketMQ中常用的四种负载均衡策略。找到Producer发送消息时选择消息队列的逻辑,在类中定义了方法:进入到方法里:上述代码的类中定义了方法:根据源码可以很清楚地看到,默认策略就是依次选择消息队列进行发送,具体的执行细节如下:如何选一个

    2022年10月13日
    0
  • java迭代和 递归的异同_递归和迭代有什么区别?简述区别

    java迭代和 递归的异同_递归和迭代有什么区别?简述区别你对于递归和迭代都了解吗?那么你是否知道递归和迭代的区别呢?那么下面就和小编一起来了解一下,这两者之间的区别究竟是怎样的吧!一、递归和迭代区别首先我们要讲到的就是两者之间的概念。首先,程序调用自身的编程技巧叫做递归,函数自己调用自己。一个函数在它的定义当中,直接或者是间接的调用自身的一种方法。它经常将一个大型的复杂的问题转化为一个和原来的问题相似的但是规模较小的问题来解决。这样能够极大的减小代码量…

    2022年5月3日
    48
  • 什么是java的关键字_java中常见的关键字

    什么是java的关键字_java中常见的关键字什么是关键字呢?概述:关键字就是在java语言中赋予特殊含义的单词特点:1.组成的关键字的单词全是小写2.常见的代码编辑器中,对关键字都有特殊的颜色标记比如在idea中对关键字都有特殊的颜色标记:在java中常见的关键字有很多,千万不能死记硬背,用一个记一个就行了,下面我举出一些常见的关键字。常见关键字:Abstract抽象的一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的…

    2022年7月7日
    21
  • ubuntu16.04怎么改成中文(ubuntu更改语言为英文)

    使用VMwareWorkstation安装64位ubuntu16.04系统,系统默认使用英文,而使用virtualbox安装,可以选择使用简体中文作为系统语言。由于英文水平有限,所以使用简体中文作为系统语言。下面是VMwareWorkstation安装的ubuntu16.04的系统语言由英文改为中文的教程。前前后后折腾的不轻,也许是水平问题吧。注意:里面有一个坑,勾选简体中文的同时…

    2022年4月17日
    223
  • 创建UFT对象

    创建UFT对象小船UFT总结:VBS创建UFT对象: SetqtApp=CreateObject(“QuickTest.Application”)    ‘创建COM对象qtApp.Launch                                                                     ‘启动UFTqtApp.New

    2022年5月28日
    33
  • char型和int型数据可以相互转换_c语言强制类型转换用法

    char型和int型数据可以相互转换_c语言强制类型转换用法char转intchar与int的相互转化,联想ASCII码,字符‘0’对应的值为48,所以不能直接加减‘’charch=’9′;intch_int=ch-‘0′;//此时ch_int=9int转charinti=9;chari_ch=i+’0’;//此时i_ch=’9’必须记住的几个ASCII值字符值ASCII值‘0’48…

    2022年10月2日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号