`
HeDYn
  • 浏览: 42236 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

jdbc 调用 sql server 的存储过程时“该语句没有返回结果集”的解决方法

阅读更多
在JDBC中调用SQL Server中的存储过程时出现如下异常:
com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:394)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:340)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:283)



解决方法:在存储过程首行加上
SET NOCOUNT ON


环境:SQL Server 2000 sp4 + 官方2008驱动(sqljdbc4.jar)
分享到:
评论
4 楼 海漂大侠 2012-08-14  
niuka 写道
请问一下楼主,怎么加上这个命令,以及加在什么位置,能否把加好的存储过程的sql给我看一下。



create procedure getPath(@userid int)
as
SET NOCOUNT ON //加在as  和声明语句之间就可以了

declare @functionid int,@parentid int//声明变量

//下面就可以写存储过程语句了
3 楼 niuka 2012-07-27  
海漂大侠 写道
alter procedure getPath(@userid int)
as
SET NOCOUNT ON
declare @functionid int,@parentid int
…………………………………………………………
…………………………………………………………


谢谢您的帮助,问题总算解决了。
2 楼 海漂大侠 2012-07-25  
alter procedure getPath(@userid int)
as
SET NOCOUNT ON
declare @functionid int,@parentid int
…………………………………………………………
…………………………………………………………

1 楼 niuka 2012-07-23  
请问一下楼主,怎么加上这个命令,以及加在什么位置,能否把加好的存储过程的sql给我看一下。

相关推荐

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...

    java调用sqlserver存储过程.pdf

    在 SQL Server 中,存储过程是一个预编译的 SQL 语句集,可以对数据库中的数据进行操作。在本例中,创建了一个名为 `InsertUser` 的存储过程,该存储过程用于向 `BookUser` 表中插入新用户信息。 2. 存储过程的参数...

    执行Sqlserver存储过程返回DataSet

    **存储过程(Stored Procedure)**:是一种预编译的SQL代码,可以被多次调用并在服务器上执行,提高了SQL语句的执行效率和重用性。它可以在数据库中定义并保存,之后可以在应用程序中通过简单的调用来执行复杂的逻辑...

    Java中调用SQL Server存储过程

    总的来说,Java通过JDBC调用SQL Server存储过程涉及连接数据库、创建CallableStatement对象、设置参数、执行存储过程以及处理结果。了解这些步骤,将使你能够灵活地在Java应用程序中集成和利用SQL Server的存储过程...

    jsp如何调用sqlserver存储过程

    在JavaServer Pages (JSP) 中调用SQL Server存储过程是一项常见的任务,特别是在构建Web应用程序时需要执行复杂的数据库操作。存储过程是预先编译的SQL语句集合,可以在数据库服务器上执行,提供性能优化和代码复用...

    sql server调用存储过程

    在SQL Server中,存储过程是一种预编译的SQL语句集合,可以视为数据库中的可重用函数,用于执行特定的任务。它们提供了许多优势,包括性能优化、代码复用、安全性增强以及减少网络流量等。本篇文章将深入探讨如何在...

    sql server2000 jdbc

    SQL Server 2000 JDBC 是Java编程语言与Microsoft SQL Server 2000数据库进行交互的一种重要方式。JDBC(Java Database Connectivity)是Java API,允许Java应用程序通过Java虚拟机(JVM)与各种数据库建立连接。在...

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    对于SQL Server特定的功能,如T-SQL存储过程,JDBC Driver 3.0也提供了调用接口。开发者可以通过CallableStatement对象来执行存储过程,并获取其返回的结果。 在安全性方面,JDBC Driver 3.0支持SSL加密,保证了...

    Java调用带参数的存储过程并返回集合

    4. **处理结果集**:遍历`ResultSet`,获取存储过程返回的集合数据: ```java while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); // ... 其他字段 System.out.println("ID: ...

    JDBC连接SQL Server 2008 R2的驱动

    JDBC驱动还提供了高级特性,如预编译的SQL语句(`PreparedStatement`)、存储过程调用、游标支持等,以便更高效、安全地与SQL Server交互。 对于SQL Server 2008 R2,了解JDBC驱动的使用是关键,但也要注意驱动的...

    JSP调用SQL Server的存储过程

    ### JSP调用SQL Server的存储过程 在本篇文章中,我们将探讨如何通过JSP页面来调用SQL Server中的存储过程。此示例涉及到数据库表的创建、存储过程的定义以及JSP页面上的具体实现。 #### 数据库表的创建 首先,...

    jdbc驱动sqlserver2000的3个jar包

    这是SQL Server 2000的主要JDBC驱动文件,实现了JDBC API,使得Java应用程序能够建立到SQL Server的网络连接,执行SQL语句,处理结果集,并管理事务。这个驱动程序通常被注册为类型4 JDBC驱动,即纯Java的数据库...

    最新jdbc for sql server 2000

    4. 执行SQL:通过Connection对象创建Statement或PreparedStatement对象,然后调用其executeQuery()或executeUpdate()方法执行SQL语句。 5. 处理结果:对于查询语句,可以获取ResultSet对象并遍历其中的数据;对于...

    jdbc for sql server 2000

    JDBC提供了一组接口和类,开发者可以使用它们来执行SQL语句、处理结果集以及管理数据库连接。 2. SQL Server 2000 JDBC驱动程序: 要在Java中连接SQL Server 2000,需要一个兼容的JDBC驱动程序。Microsoft提供了...

    SQL Server Driver for JDBC (JDBC 连接SQL Server 2000 )

    它提供了与数据库建立连接、执行SQL语句、处理结果集等核心操作的类和接口,如java.sql.Connection、java.sql.Statement、java.sql.ResultSet等。 2. **mssqlserver.jar**:这是针对SQL Server特定的实现,包含了...

    实例讲解JSP调用SQL Server的存储过程

    这个例子讲解了如何使用JSP调用SQL Server的存储过程,并介绍了相关的知识点,例如创建表、创建存储过程、JSP调用存储过程、JDBC驱动、CallableStatement、Connection、事务机制和错误处理机制。

    jdbc_sqlserver

    - `PreparedStatement`接口预编译SQL语句,提供更高效、安全的方式,尤其在处理参数时,防止SQL注入,如: ```java PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM myTable WHERE id = ?"); ...

    Matlab中使用JDBC访问SQL Server

    4. **执行查询**:使用 `exec` 函数执行SQL查询语句(此处为 `SELECT * FROM TestTable`),该语句返回一个游标对象。 5. **获取数据**:通过调用 `fetch` 方法从游标中获取数据,并将其存储在MATLAB数组 `data` 中...

    JDBC_SQLServer_6.0驱动

    JDBC(Java Database Connectivity)是Java语言中用于与各种数据库进行交互的一套标准API,它允许Java应用程序通过编写Java代码来执行SQL语句,从而实现对数据库的操作。 在Java开发中,JDBC驱动是必不可少的部分,...

    jdbc for sqlserver

    4. **存储过程**:通过`CallableStatement`调用SQLServer的存储过程,如: ```java CallableStatement cstmt = conn.prepareCall("{call myProc(?, ?)}"); cstmt.setString(1, "param1"); cstmt....

Global site tag (gtag.js) - Google Analytics