Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Semua penyedia data .NET Framework memiliki Connection objek dengan dua peristiwa yang dapat Anda gunakan untuk mengambil pesan informasi dari sumber data atau untuk menentukan apakah status telah Connection berubah. Tabel berikut ini menjelaskan peristiwa Connection objek.
| Peristiwa | Deskripsi |
|---|---|
| InfoMessage | Terjadi ketika pesan informasi dikembalikan dari sumber data. Pesan informasi adalah pesan dari sumber data yang tidak menyebabkan terjadinya pengecualian. |
| StateChange | Terjadi ketika status Connection perubahan. |
Bekerja dengan Event InfoMessage
Anda dapat mengambil peringatan dan pesan informasi dari sumber data SQL Server menggunakan peristiwa InfoMessage dari objek SqlConnection. Kesalahan yang dikembalikan dari sumber data dengan tingkat keparahan 11 hingga 16 menyebabkan pengecualian dihasilkan. Namun, InfoMessage peristiwa dapat digunakan untuk mendapatkan pesan dari sumber data yang tidak terkait dengan kesalahan. Dalam kasus Microsoft SQL Server, kesalahan apa pun dengan tingkat keparahan 10 atau kurang dianggap sebagai pesan informasi, dan dapat ditangkap dengan menggunakan peristiwa tersebut InfoMessage . Untuk informasi selengkapnya, lihat artikel Tingkat Keparahan Kesalahan Mesin Database .
Peristiwa InfoMessage menerima sebuah objek SqlInfoMessageEventArgs yang berisi koleksi pesan dari sumber data dalam propertinya Errors. Anda dapat mengkueri Error objek dalam koleksi ini untuk nomor kesalahan dan teks pesan, serta sumber kesalahan. Penyedia Data .NET Framework untuk SQL Server juga menyertakan detail tentang database, prosedur tersimpan, dan nomor baris tempat pesan berasal.
Contoh
Contoh kode berikut menunjukkan cara menambahkan penanganan aktivitas untuk peristiwa tersebut InfoMessage .
' Assumes that connection represents a SqlConnection object.
AddHandler connection.InfoMessage, _
New SqlInfoMessageEventHandler(AddressOf OnInfoMessage)
Private Shared Sub OnInfoMessage(sender As Object, _
args As 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
// Assumes that connection represents a SqlConnection object.
connection.InfoMessage +=
new SqlInfoMessageEventHandler(OnInfoMessage);
protected static void OnInfoMessage(
object sender, SqlInfoMessageEventArgs args)
{
foreach (SqlError 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);
}
}
Menangani Kesalahan sebagai Pesan Informasi
Kejadian InfoMessage biasanya hanya akan terjadi untuk informasi dan pesan peringatan yang dikirim dari server. Namun, ketika terjadi kesalahan aktual, eksekusi metode ExecuteNonQuery atau ExecuteReader yang memulai operasi server akan dihentikan dan pengecualian tersebut dilemparkan.
Jika Anda ingin terus memproses sisa pernyataan dalam perintah terlepas dari kesalahan apa pun yang dihasilkan oleh server, atur properti FireInfoMessageEventOnUserErrors dari SqlConnection ke true. Melakukan ini menyebabkan koneksi memicu peristiwa InfoMessage untuk menangani kesalahan daripada melempar pengecualian dan mengganggu pemrosesan. Aplikasi klien kemudian dapat menangani peristiwa ini dan merespons kondisi kesalahan.
Nota
Kesalahan dengan tingkat keparahan 17 atau lebih tinggi yang menyebabkan server berhenti memproses perintah harus ditangani sebagai pengecualian. Dalam hal ini, pengecualian dilemparkan terlepas dari bagaimana kesalahan ditangani dalam peristiwa tersebut InfoMessage .
Bekerja dengan StateChange Event
Peristiwa StateChange terjadi ketika status dari Connection berubah. Peristiwa StateChange menerima StateChangeEventArgs yang memungkinkan Anda menentukan perubahan status Connection dengan menggunakan properti OriginalState atau CurrentState. Properti OriginalState adalah enumerasi ConnectionState yang mengindikasikan keadaan Connection sebelum berubah.
CurrentState adalah ConnectionState enumerasi yang menunjukkan status Connection setelah berubah.
Contoh kode berikut menggunakan event StateChange untuk menulis pesan ke konsol saat state Connection berubah.
' Assumes connection represents a SqlConnection object.
AddHandler connection.StateChange, _
New StateChangeEventHandler(AddressOf OnStateChange)
Protected Shared Sub OnStateChange( _
sender As Object, args As StateChangeEventArgs)
Console.WriteLine( _
"The current Connection state has changed from {0} to {1}.", _
args.OriginalState, args.CurrentState)
End Sub
// Assumes connection represents a SqlConnection object.
connection.StateChange += new StateChangeEventHandler(OnStateChange);
protected static void OnStateChange(object sender,
StateChangeEventArgs args)
{
Console.WriteLine(
"The current Connection state has changed from {0} to {1}.",
args.OriginalState, args.CurrentState);
}