java - sql server 2008,PreparedStatement jdbc 获取多个查询

标签 java sql-server-2008 jdbc

给出错误:com.microsoft.sqlserver.jdbc.SQLServerException:该语句未返回结果集。

存储过程

CREATE  PROCEDURE getDetails(@n varchar(50) OUT,@c varchar(50) OUT,@i INT OUT)
as
BEGIN 
SELECT @n=product.name,@c=product.code,@i=product.id FROM  product;
END;

java代码

 try
    {
            Connection con =LoginConnection.getConnection();
    CallableStatement stmt=con.prepareCall("{call getDetails(?,?,?)}");

    stmt.registerOutParameter(1, Types.VARCHAR);
            stmt.registerOutParameter(2, Types.VARCHAR);
            stmt.registerOutParameter(3, Types.INTEGER);
            ResultSet resultSet = stmt.executeQuery();
            while(resultSet.next())
            {
               System.out.println("value 1:"+resultSet.getString(1));
               System.out.println("value 2:"+resultSet.getString(2));
               System.out.println("Value 3:"+resultSet.getInt(3));
            }

         con.close(); 
    }
    catch(Exception e)
    {
           System.out.println("ex:"+e); 
    }

最佳答案

The statement did not return a result set.

确实如此。流程

CREATE PROCEDURE getDetails
(
    @n varchar(50) OUT,
    @c varchar(50) OUT,
    @i INT OUT
) AS 
BEGIN 
    SELECT @n=product.name,@c=product.code,@i=product.id FROM product; 
END;

不会返回结果集。它只会从表的一行(SELECT 语句返回的最后一行)返回三个标量 OUT 参数值。如果您希望存储过程返回结果集,那么

ALTER PROCEDURE getDetails
AS 
BEGIN 
    SELECT product.name, product.code, product.id FROM product; 
END;

并使用此 Java 代码

CallableStatement stmt = con.prepareCall("{call getDetails}");
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
    System.out.println("ProductName: " + resultSet.getString(1));
    System.out.println("ProductCode: " + resultSet.getString(2));
    System.out.println("  ProductID: " + resultSet.getInt(3));
}

关于java - sql server 2008,PreparedStatement jdbc 获取多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437637/

相关文章:

SQL服务器: Left join and subquery

sql - 多列平均值

sql - 审核 SQL Server 数据更改

java - JDBC4 Hive 驱动程序错误 : Only AEQuery is supported

java - 最佳实践 : How to check for a specific java. util.Calendar/Date in SQL.DATE by JDBC?

java - 项目构建路径中显示缺少 selenium jar 文件

java - 为什么 Adapter 多次向 ListView 添加相同的位置?

java - 集合删除方法不提供并发修改异常

java - Hibernate @BatchSize 在 session.flush 之后无法按预期工作

java - Spring MVC NoSuchMethodError 错误