用JDBC连接SQL数据库,同时查询多个存储过程时报TDS协议流无效的异常与下图中用JDBC连接mysql数据库,同时查询多个存储过程报的Operation not allowed after ResultSet closed异常是一样。

存储过程的执行结果是按照特定格式放在ResultSet里解析的,这个格式就是查询结果的格式。如果存储过程执行时遇见它的查询操作被其他进程占用时,就无法正确返回,而是返回错误的代码或是乱码。在执行rs.next()时就会抛出异常。

出现这个报错主要是因为代码在查询存储过程时ResultSet被关闭导致查询未开始或者查询未完成使得返回数据异常导致的。在编程的时候,我们会把连接数据库常用的Connection、PreparedStatement和ResultSet声明为全局变量来减少代码量,而导致这个报错出现的关键就在这里。在同时查询多个存储过程时,每个方法执行时都会调用到它们,也就是说每个方法调用的都是同一个Connection、PreparedStatement和ResultSet,查询完成时我们是要把这些数据库连接关闭的,当这些查询方法中的其中一个查询完成时就会把Connection、PreparedStatement和ResultSet都close,这时候其他的查询可能有还未开始的或者有正在查询的,但是由于ResultSet的关闭而导致全部的查询过程都被终止,最后返回来的结果要么是乱码,要么是不全,要么是没有值,所以就报了这样的错。

知道问题所在之后解决起来就很容易了,把Connection、PreparedStatement和ResultSet声明在查询方法的里面,让每个查询方法调用的都是独立存在互不影响的就可以解决这个报错了。下图的代码执行完了之后用了两次close来关闭,这里用一次关闭也行,根据代码需求来。

虽然这个报错是ResultSet异常返回而导致的

下面这段查询代码是用来获取下拉框数据的,在页面中有四个下拉框需要同时访问数据库获取数据进行绑定,在这里即使调用的是同一个封装方法也不会报上述的错误。

查询存储过程报错TDS协议流无效相关推荐

  1. java 调用存储过程 无效的列索引_JAVA 调用存储过程报错 java.sql.SQLException: 无效的列索引...

    报错信息java.sql.SQLException:无效的列索引atoracle.jdbc.driver.OracleCallableStatement.registerOutParameterInt ...

  2. SQL 新加字段查询窗口报错

    SQL 新加字段查询窗口报错 这是由于SQL Server的intellisense的引起的,intellisense是SQL Server的智能记录智能感知功能,即当给sql表名加上".& ...

  3. 当子查询内存在ORDER BY 字句时查询会报错

    问题:当子查询内存在ORDER BY 字句时查询会报错SQL:SELECT * FROM (SELECT * FROM USER ORDER BY USER_CORD) S.解决办法:在子查询SQL语 ...

  4. java调用oracle过程,JAVA调用ORACLE存储过程报错

    当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net  网友分享于:2015-07-1 ...

  5. sqlserver存储过程报错:当前事务无法提交,而且无法支持写入日志文件的操作。请回滚该事务

    请仔细分析这句话 : 是普通的insert 语句,还是在存储过程中的insert语句呢?如果是存储过程中的语句,可能是因为:sqlserver存储过程报错:当前事务无法提交,而且无法支持写入日志文件的 ...

  6. ​Mirth调用存储过程报错ORA-01861: 文字与格式字符串不匹配​

    Mirth调用存储过程报错.ORA-01861: 文字与格式字符串不匹配 这种绝对是日期的错误,要进行日期格式转换,具体呢需要自己一步步测试 上业务场景 function func_CreateCar ...

  7. oracle expdp报错ora-390087:目录名XXX无效

    一.错误信息 在使用expdp导出oracle11g数据库,执行命令expdp doms/doms@orcl schemas=doms dumpfile=doms.dmp content=data_o ...

  8. windows系统,使用命令行启动MySQL服务失败,报错:服务名无效。

    方式一:命令行启动 在windows系统中,使用net start mysql启动MySQL服务,报错:服务名无效. 问题原因: 服务器名错了 解决办法 :应该使用命令net start mysql8 ...

  9. mysql 存储过程 异常 回滚吗_MySQL 5.7 存储过程报错不回滚

    本人在做项目时,遇到了一个异常蛋疼的问题,困扰了很久. 项目原先的数据库选用的是Oracle,后来到新项目中,换成了MySQL,一些主要的业务操作都是由Procedure来实现完成的.之前写过SqlS ...

最新文章

  1. 自动驾驶中的机器学习
  2. 3w最简单led灯电路图_12v延时关闭电路图大全
  3. 解析 WordPress 插件机制
  4. 查看与其他计算机是否连接网络,电脑的网络连接情况要如何的查看和管理
  5. 上传文件 connection reset
  6. Oracle入门(十二H)之设置、恢复和删除不可用列
  7. PHP面向对象(OOP)----分页类 1
  8. 统计学习方法第15章-奇异值分解SVD
  9. eclipse 大小写快捷键_idea中的一些常用快捷键
  10. 磁盘不见了只剩一个c盘_教你如何处理只剩一个C盘
  11. 网络调试助手简单使用教程(CM精装版V3.8.2)
  12. Vue项目中引入阿里icon图标
  13. 软件沙箱技术 – 安全分析沙箱Cuckoo Sandbox
  14. 用正则表达式验证邮箱、密码、QQ号、手机号、身份证号
  15. day02 126邮箱注册思维导图 / 城市电话号码/ qq号登录
  16. ERROR: failed to establish dependency between database sgerp5 and diskgroup resource ora.DATA.dg
  17. MySQL远程连接报错:ERROR 2002 (HY000): Can‘t connect to server on ‘192.168.172.130‘ (115)
  18. 欧几里得、扩展的欧几里得算法
  19. 搜索框实现模糊查询方法 - js
  20. 更改mysql数据库主键自增时报错ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1

热门文章

  1. 如何进行电源干扰及抑制技术?
  2. 概率与数理统计——中心极限定律
  3. PyGame弹珠游戏双人粗略版
  4. 正则表达式学习的一天
  5. 什么是IP地址定位,优缺点有哪些?
  6. 神经网络(二):Softmax函数与多元逻辑回归
  7. Expressing Fear(2019/1/4)
  8. 弱类型语言为何不堪大用
  9. 微信里的apk链接打不开,怎么让微信的扫一扫扫描二维码后安装apk?
  10. c语言一段scanf代码,各位谁有c语言中 scanf 语句的源代码 请发邮箱 wsk456@163.com 小弟不胜感激~谢谢~...