解决JDBC中Parameter number X is not an OUT parameter

话不多数,直接上码!

mysql语句如下:

DELIMITER $$
CREATE PROCEDURE QUERY_NAME(IN eid INT,OUT ename VARCHAR(20))
BEGINSELECT name into ename FROM javaee.employee WHERE id=eid;
END $$
DELIMITER;

java重要源码如下

//以下是从配置文件获取数据库的参数
properties.load(new FileInputStream("./src/jdbc.properties"));
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
driverClass = properties.getProperty("driverClass");
//以下是调用存储过程
String sql = "CALL QUERY_NAME(?,?)";
connection = JdbcUtil.getConnection();
callStatement = connection.prepareCall(sql);
// 设置输入参数
callStatement.setInt(1, 1);
// 设置输出参数
callStatement.registerOutParameter(2, java.sql.Types.VARCHAR);
// 发送sql
callStatement.executeQuery();
// 获取结果
String name = callStatement.getString(2);
System.out.println(name);

运行后出现如下问题

java.sql.SQLException: Parameter number 2 is not an OUT parameterat com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)at com.mysql.jdbc.CallableStatement.checkIsOutputParam(CallableStatement.java:630)at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1807)at better.cool.test3.Test3.main(Test3.java:27)

仔细排查后,发现是没有指定数据库的原因,解决方法有两种:
(1)在连接数据库时,指定数据库,如   url=jdbc:mysql://localhost:3306/javaee
其中javaee为指定的数据库,只需要把存储过程存在这个数据库里即可。
(2)在写sql语句时指定数据库,如 CALL   javaee.QUERY_NAME(?,?)
希望以上可以帮助大家不要踩坑,不然真的要找好久才会恍然大悟。

解决JDBC中Parameter number X is not an OUT parameter相关推荐

  1. Parameter number 2 is not an OUT parameter 问题的解决方法

    1 问题描述 换了一个 MySQL 数据库,原来调用正常的存储过程,现在抛错了.具体错误如下: Caused by: java.sql.SQLException: Parameter number 2 ...

  2. 解决input 中 type=“number“右侧上下箭头以及取消默认滚轮事件

    1.解决右侧上下箭头 <style>input[type='number'] {-moz-appearance:textfield;}input[type=number]::-webkit ...

  3. 解决:Parameter number 5 is not an OUT parameter

    (此处省略100000字苦逼,愚蠢的找bug过程) 错误原因有以下几个: 1.Mysql里面压根没有那个存储过程 2.Mysql里存储过程的名字跟调用的存储过程名字不一样(名字写错了) 3.存储过程代 ...

  4. 误报的java.sql.SQLException: Parameter number 21 is not an OUT parameter

    今天为了模拟一个mysql内存不释放问题,要测试一个存储过程,同时具有出参和入参,启动时报了上述错误. <select id="funcl_trd_secu_execution_que ...

  5. java.sql.SQLException: Parameter number X is not an OUT parameter

    发生这个问题一般是以下三种情况 1.存储过程找不到,名字是否写错 2.第X个参数是否正确,或者是否是输出参数,检查存储过程定义参数,以及 call ...{?,?}中?的个数,以及java 中设置参数 ...

  6. 解决java.sql.SQLException: Parameter number X is not an OUT parameter--转

    最近独自一个人写项目,孤军奋战的程序猿可真伤不起! Java 调用MYSQL带输入输出参数存储过程时如题错误:java.sql.SQLException: Parameter number X is ...

  7. 【8008】解决idea中JDBC写sql语句出现报错Unable to resolve table ‘表名‘?

    [8008]解决idea中写sql语句出现报错Unable to resolve table '表名'? 问题背景: 昨天使用JDBC连接数据库中写sql语句,一直爆红,真服了,虽然能运行,但看着不舒 ...

  8. python画指数函数图像_解决python中的幂函数、指数函数问题

    最近在调代码,碰到幂函数.指数函数,总是提示 ValueError: math domain error ValueError: negative number cannot be raised to ...

  9. 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果

    一直很纠结,Oracle的快速返回机制,虽然结果集很多,可是它能很快的显示第一个结果,虽然通过MYSQl的客户端可以做到,但是通过JDBC却不行. 今天用了1个多小时,终于搞定此问题,希望对广大Jav ...

最新文章

  1. maven基础概念学习1
  2. LeetCode-二分查找-69. Sqrt(x)
  3. Python四大金刚之二:字典
  4. 杭州电子科技大学计算机专硕表数二,杭州电子科技大学 计算机学院 2016级计算机技术(专硕)培养方案...
  5. 线程5-生产者消费者模式(线程通信)
  6. 腾讯网易禁止未成年人本周六玩游戏
  7. yum 命令提示语法错误
  8. java数据结构银行叫号,数据结构实验二——队列(银行叫号系统)
  9. 在visio里面插入带圆圈的数字字符
  10. 有关vista系统的激活工具
  11. javascript原生实现二级联动下拉菜单
  12. 2020世界人工智能大会 -- 落地AI,赋能未来
  13. 超微A+ Server 4124GS-TNR做主板集成RAID
  14. 2020-10-30
  15. 上古卷轴php代码,上古卷轴5负重代码使用方法及修改方法介绍
  16. bldc不同载波频率_有刷CD电机好用还是无刷BLDC电机好用?该选那个?
  17. IEEE期刊latex文档最后一页参考文献双栏对齐
  18. PostGIS空间拓扑关系空间分析教程
  19. Mac OS下怎么录屏,能同时保留声音?
  20. struts多模块开发

热门文章

  1. sklearn.metrics.roc_curve解析
  2. linux子系统的控制台打开方法
  3. 面试篇——Spring
  4. 1070: 小汽车的位置 Python
  5. 如何TIA博途中更新HSP硬件目录?
  6. 计算机如何更新目录,wps怎么更新目录【具体阐明】
  7. 经常逛Github的人才知道的开源框架
  8. 中国知网html如何复制,中国知网如何快速导出参考文献的格式? 来看看吧
  9. 基于ESP8266+华为云数据监控模块
  10. Android基本界面元素的使用与讲解