Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tüm .NET Framework veri sağlayıcılarının, bir veri kaynağından bilgilendirici iletileri almak veya durumunun Connection değişip değişmediğini belirlemek için kullanabileceğiniz iki olayı olan nesneleri vardırConnection. Aşağıdaki tabloda nesnenin Connection olayları açıklanmaktadır.
| Etkinlik | Açıklama |
|---|---|
| InfoMessage | Veri kaynağından bilgilendiren bir ileti döndürülürse gerçekleşir. Bilgilendirme iletileri, bir veri kaynağından gelen ve bir özel durumun oluştuğuna neden olmayan iletilerdir. |
| Durum Değişikliği |
Connection durum değiştirildiğinde gerçekleşir. |
InfoMessage Etkinliği ile Çalışmak
Nesnenin InfoMessage olayını kullanarak SqlConnection bir SQL Server veri kaynağından uyarılar ve bilgilendirme iletileri alabilirsiniz. Ciddiyet seviyesi 11 ile 16 arasında olan veri kaynağından döndürülen hatalar bir istisna yaratır. Ancak olay, InfoMessage veri kaynağından bir hatayla ilişkilendirilmemiş iletileri almak için kullanılabilir. Microsoft SQL Server söz konusu olduğunda, önem derecesi 10 veya daha az olan tüm hatalar bilgilendirme mesajı olarak kabul edilir ve InfoMessage olayı kullanılarak yakalanabilir. Daha fazla bilgi için Veritabanı Altyapısı Hata Önem Dereceleri makalesine bakın.
OlayInfoMessage, veri kaynağından gelen iletilerin bir koleksiyonunu içeren SqlInfoMessageEventArgs nesnesinin Errors özelliğini alır. Hata numarası ve ileti metninin yanı sıra hatanın kaynağı için bu koleksiyondaki nesneleri sorgulayabilirsiniz Error . SQL Server için .NET Framework Veri Sağlayıcısı ayrıca iletinin geldiği veritabanı, saklı yordam ve satır numarası hakkında ayrıntılı bilgi içerir.
Örnek
Aşağıdaki kod örneği, bir olay için olay işleyicisinin InfoMessage nasıl ekleneceğini gösterir.
' 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);
}
}
InfoMessages Olarak Hataları İşleme
Olay InfoMessage normalde yalnızca sunucudan gönderilen bilgilendirme ve uyarı iletileri için tetiklenir. Ancak, gerçek bir hata meydana geldiğinde, sunucu işlemini başlatan ExecuteNonQuery veya ExecuteReader yönteminin yürütülmesi durdurulur ve bir özel durum oluşturulur.
Sunucunun oluşturduğu hataları önemsemeden bir komuttaki diğer deyimleri işlemeye devam etmek istiyorsanız, FireInfoMessageEventOnUserErrors öğesinin SqlConnection özelliğini true olarak ayarlayın. Bunun yapılması, bağlantının hatalara karşı istisna oluşturup işlemi kesintiye uğratmak yerine InfoMessage olayını tetiklemesine neden olur. İstemci uygulaması daha sonra bu olayı işleyebilir ve hata koşullarına yanıt verebilir.
Uyarı
Sunucunun komutu işlemeyi durdurmasına neden olan önem düzeyi 17 veya üzeri olan bir hata özel durum olarak işlenmelidir. Bu durumda, hatanın InfoMessage olayında nasıl işlendiğinden bağımsız olarak bir istisna atılır.
StateChange Olayı Üzerinde Çalışmak
Bir Connection durum değiştirdiğinde, StateChange olayı gerçekleşir. Etkinlik, OriginalState ve CurrentState özelliklerini kullanarak Connection durumundaki değişikliği belirlemenize olanak tanıyan StateChange, StateChangeEventArgs alır.
OriginalState özelliği, Connection değişmeden önceki durumunu belirten bir ConnectionState numaralandırmadır.
CurrentState değiştikten sonra Connection'nin durumunu belirten bir ConnectionState numaralandırmasıdır.
Aşağıdaki kod örneği, Connection durum değişikliği olduğunda konsola bir mesaj yazmak için StateChange olayını kullanır.
' 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);
}