【问题标题】:How to get output of an SQL Server stored procedure in Java如何在 Java 中获取 SQL Server 存储过程的输出
【发布时间】:2021-06-03 19:16:16
【问题描述】:

我有一个通过各种 PRINT 语句产生输出的存储过程。我想在 Java 中获取该输出,但我不知道该怎么做。这能做到吗?

【问题讨论】:

  • 我只会在过程中使用OUT参数。
  • 旧的,但可能仍然有效 - 没有 you can't
  • 您可以在ADO 中使用,但实际上这并不是将信息返回给客户的一种方式。
  • PRINT 设计为调试工具,请勿在生产代码中使用它

标签: java sql-server


【解决方案1】:

打印语句的输出可通过 SQLWarnings 获得,例如:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;

public class SQLDatabaseConnection {
    public static void main(String[] args) {
        String connectionUrl =
                "jdbc:sqlserver://YourServerName:1433;"
                        + "database=SomeDB;"
                        + "user=SomeUsername;"
                        + "password=S0meM4gic4lP4ssw0rd;"
                        + "encrypt=true;"
                        + "trustServerCertificate=true;"
                        + "loginTimeout=30;";

        ResultSet resultSet = null;

        try (Connection connection = DriverManager.getConnection(connectionUrl);
            Statement statement = connection.createStatement();) {

            resultSet = statement.executeQuery("print 'Hello, world!'; select getdate() as [Something]");
            while (resultSet.next()) {
                System.out.format("Result set: %s\n", resultSet.getString(1));
            }

            SQLWarning warning = statement.getWarnings();
            while (warning != null)
            {
                System.out.format("Warning: %s\n", warning.getMessage());
                warning = warning.getNextWarning();
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

哪些输出...

Result set: 2021-06-04 00:38:27.567
Warning: Hello, world!

【讨论】:

  • 这正是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-06-11
  • 2019-02-03
  • 2012-01-26
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
相关资源
最近更新 更多