您现在的位置是:网站首页> 编程资料编程资料
使用sqlserver官方驱动包调用存储过程遇到的坑及解决方法_MsSql_
2023-05-26
408人已围观
简介 使用sqlserver官方驱动包调用存储过程遇到的坑及解决方法_MsSql_
和外部系统做对接,对方提供了一个存储过程,对方为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语句)_MsSql_
- SQL Server ISNULL 不生效原因及解决_MsSql_
- 关于if exists的用法及说明_MsSql_
- 教你恢复SQLSERVER的master系统库的方法_MsSql_
- Sql Server "用户登录失败,错误编18456"的解决过程_MsSql_
- SQL语句过滤条件放在on与where子句中的区别和联系浅析_MsSql_
- SQL Server Reporting Services 匿名登录的问题及解决方案_MsSql_
- SQL Server还原完整备份和差异备份的操作过程_MsSql_
- 分享Sql Server 存储过程使用方法_MsSql_
- SqlServer创建自动收缩事务日志任务的图文教程_MsSql_
