有没有办法用SQL Server JDBC驱动程序显示PRINT结果?

如果我的存储过程中有一个print语句:

print 'message' 

有没有办法获取通过JDBC连接到SQL Server 2008的java程序中的输出?

另外,从JDBC应用程序调用时,是否存在print消息进行调试会关闭连接的危险?

是的,有: https : //dba.stackexchange.com/a/44373/5457

 Statement stmt = ...; stmt.execute("some sql"); SQLWarning warning = stmt.getWarnings(); while (warn != null) { System.out.println(warning.getMessage()); warning = warning.getNextWarning(); } 

本文将介绍如何在VB.NET中执行此操作

我相信你可以在你的java代码中做同样的事情。

您需要做的就是将处理函数附加到SqlInfoMessageEvent

上面文章中指定的VB.NET代码在我的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 

其他有用的链接如下。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.infomessage.aspx

http://msdn.microsoft.com/en-us/library/a0hee08w.aspx

你不能这样做。 您可以选择使用存储过程中的输出参数

 SELECT 'message' 

这将为您提供一个可以在Java中阅读的ResultSet