2009-11-18 29 views

回答

5

是的,有: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(); 
} 
0

你不能這樣做。你的選擇是使用輸出參數從存儲過程或做

SELECT 'message' 

,這將給你一個ResultSet,你可以在Java讀取。

1

article展示瞭如何做到這一點在VB.NET

我相信你可以做同樣在Java代碼中。

所有你需要做的就是附加一個處理函數SqlInfoMessageEvent上述文章中所指定

VB.NET代碼不能正常工作一些如何在我的工作室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

相關問題