使用sqlserver官方驱动包调用存储过程遇到的坑及解决方法

2022-12-08 0 321

和外部系统做对接,对方提供了一个存储过程,对方为sqlserver数据库,我方为oracle数据库。需求简单来说就是调用对方的存储过程获得结果,转储到我方库,后续在对数据进行处理。

我写了个代码片段做测试,用jdbc来调用对方的存储过程,可是在调用后就直接报错了,错误信息如下

com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集

我就不理解了,为啥用数据库连接工具调就没问题呢?是有结果集的呀。

疯狂找资料,找帖子。最后终于是找到了。

解决方法:

换驱动包。对方数据库是SQL server2008,我用的是 sqljdbc4-4.0 。直接换了第三方开源的SQL Server数据库的JDBC驱动程序 jtds1.2。问题解决,调用存储过程的时候不再出错。在存储过程首行添加 set nocount on (这个我没实验,因为存储过程没在我手里,操作不到)

最后记录一段jdbc调用存储结构的代码,一个参数,返回结果集

import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test { final static String SERVERURL = \”jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=XXX\”; final static String SERVERDriver = \”net.sourceforge.jtds.jdbc.Driver\”; final static String SERVERUSERNAME = \”username\”; final static String SERVERPASSWORD = \”password\”; public static void main(String[] args) { try { //调用存储过程 Class.forName(SERVERDriver); Connection conn = DriverManager.getConnection(SERVERURL, SERVERUSERNAME, SERVERPASSWORD); System.out.println(\”sql server连接成功\”); String call = \”{call 存储过程名称(?)}\”; CallableStatement callableStatement = conn.prepareCall(call); callableStatement.setString(1, \”2022-10-13\”); ResultSet rs = callableStatement.executeQuery(); while(rs.next()) { System.out.println(rs.getString(\”aaa\”)); System.out.println(rs.getString(\”bbb\”)); System.out.println(rs.getString(\”ccc\”)); System.out.println(rs.getString(\”ddd\”)); } callableStatement.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } }}

到此这篇关于用sqlserver官方驱动包调用存储过程遇到的一个坑的文章就介绍到这了,更多相关sqlserver官方驱动包调用存储过程内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

您可能感兴趣的文章:SqlServer存储过程实现及拼接sql的注意点SQLServer存储过程中事务的使用方法sqlserver中存储过程的递归调用示例谈谈sqlserver自定义函数与存储过程的区别SQLServer用存储过程实现插入更新数据示例

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Mssql数据库 使用sqlserver官方驱动包调用存储过程遇到的坑及解决方法 https://www.u-9.cn/sql/mssql/5803.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    文章总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

注册会员,众多资源免费下载