Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有一种使用SQL server JDBC驱动程序显示打印结果的方法?_Java_Sql Server_Sql Server 2008_Jdbc - Fatal编程技术网

Java 是否有一种使用SQL server JDBC驱动程序显示打印结果的方法?

Java 是否有一种使用SQL server JDBC驱动程序显示打印结果的方法?,java,sql-server,sql-server-2008,jdbc,Java,Sql Server,Sql Server 2008,Jdbc,如果我的存储过程中包含打印语句: print 'message' 有没有办法在通过JDBC连接到SQLServer2008的java程序中获取输出 另外,当从JDBC应用程序调用时,是否存在这样一种危险,即留给调试的打印消息会关闭连接?您不能这样做。您可以选择使用存储过程中的输出参数或执行以下操作 SELECT 'message' 这将为您提供一个可以在Java中阅读的结果集。这说明了如何在VB.NET中执行此操作 我相信在java代码中也可以做到这一点 您只需将处理程序函数附加到SqlIn

如果我的存储过程中包含打印语句:

print 'message'
有没有办法在通过JDBC连接到SQLServer2008的java程序中获取输出


另外,当从JDBC应用程序调用时,是否存在这样一种危险,即留给调试的
打印
消息会关闭连接?

您不能这样做。您可以选择使用存储过程中的输出参数或执行以下操作

SELECT 'message'
这将为您提供一个可以在Java中阅读的
结果集。

这说明了如何在VB.NET中执行此操作

我相信在java代码中也可以做到这一点

您只需将处理程序函数附加到SqlInfoMessageEvent

上面文章中指定的VB.NET代码在my studio 2005环境中无法正常工作

所以我重新写了它如下

Imports System.Data.SqlClient
Module Module1

    Public Sub Main()

        'change your database name in following line.
        Dim conn As New SqlConnection("server=(local);Integrated Security=SSPI;database=Test")



        AddHandler conn.InfoMessage, New SqlInfoMessageEventHandler(AddressOf OnInfoMessage)



        conn.Open()



        Dim cmd As New SqlCommand()

        cmd.Connection = conn

        cmd.CommandType = CommandType.StoredProcedure

        cmd.CommandText = "[SPWithPrint]"



        cmd.ExecuteNonQuery()



        conn.Close()



        ' Dts.TaskResult = Dts.Results.Success



    End Sub



    Private Sub OnInfoMessage(ByVal sender As Object, ByVal args As System.Data.SqlClient.SqlInfoMessageEventArgs)

        Dim err As SqlError
        For Each err In args.Errors
            Console.WriteLine("The {0} has received a severity {1}, state {2} error number {3}\n" & _
      "on line {4} of procedure {5} on server {6}:\n{7}", _
      err.Source, err.Class, err.State, err.Number, err.LineNumber, _
    err.Procedure, err.Server, err.Message)
        Next

    End Sub

End Module
其他有用的链接如下

是的,有:

Statement stmt = ...;
stmt.execute("some sql statement");
SQLWarning warning = stmt.getWarnings();

while (warning != null) {
    System.out.println(warning.getMessage());
    warning = warning.getNextWarning();
}