Megosztás a következőn keresztül:


Csatlakozás ionesemények

Az összes .NET-keretrendszer adatszolgáltató rendelkezik Csatlakozás ion objektumokkal, amelyek két eseményt tartalmaznak, amelyekkel információs üzeneteket kérdezhet le egy adatforrásból, vagy megállapíthatja, hogy megváltozott-e egy Csatlakozás ion állapota. Az alábbi táblázat a Csatlakozás ion objektum eseményeit ismerteti.

Esemény Leírás
InfoMessage Akkor fordul elő, ha egy adatforrásból tájékoztató üzenetet ad vissza. Az információs üzenetek olyan adatforrásból származó üzenetek, amelyek nem eredményeznek kivételt.
StateChange A Csatlakozás ion állapota megváltozik.

Az InfoMessage esemény használata

Az objektum eseményével figyelmeztetéseket és tájékoztató üzeneteket is lekérhet egy InfoMessage SQL Server-adatforrásból SqlConnection . Az adatforrásból visszaadott, 11–16-os súlyosságú hibák kivételt okoznak. Az InfoMessage esemény azonban használható arra, hogy olyan üzeneteket szerezzen be az adatforrásból, amelyek nem tartoznak hibához. Microsoft SQL Server esetén a 10 vagy annál kisebb súlyosságú hibák tájékoztató üzenetnek minősülnek, és az InfoMessage esemény használatával rögzíthetők. További információkért tekintse meg az adatbázismotor hiba súlyosságáról szóló cikket.

Az InfoMessage esemény kap egy SqlInfoMessageEventArgs objektumot, amely a Errors tulajdonságában az adatforrásból származó üzenetek gyűjteményét tartalmazza. A gyűjtemény hibaobjektumait a hibaszám és az üzenet szövege, valamint a hiba forrása alapján kérdezheti le. Az SQL Server .NET-keretrendszer adatszolgáltatója részletesen ismerteti az adatbázist, a tárolt eljárást és az üzenet által kapott sorszámot.

Példa

Az alábbi példakód bemutatja, hogyan vehet fel eseménykezelőt az InfoMessage eseményhez.

' 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);  
  }  
}  

Hibák kezelése InfoMessages-ként

Az InfoMessage esemény általában csak a kiszolgálóról küldött tájékoztató és figyelmeztető üzenetek esetén aktiválódik. Ha azonban tényleges hiba történik, a kiszolgálói műveletet kezdeményező ExecuteNonQuery vagy ExecuteReader metódus végrehajtása leáll, és kivétel lép fel.

Ha a parancs többi utasításának feldolgozását a kiszolgáló által előidézett hibáktól függetlenül szeretné folytatni, állítsa a FireInfoMessageEventOnUserErrors tulajdonságot a SqlConnection következőre true. Ez azt eredményezi, hogy a kapcsolat hiba miatt aktiválja az InfoMessage eseményt ahelyett, hogy kivételt okoz, és megszakítja a feldolgozást. Az ügyfélalkalmazás ezután képes kezelni ezt az eseményt, és reagálni a hibafeltételekre.

Feljegyzés

Kivételként kell kezelni egy 17-es vagy annál magasabb súlyossági szintű hibát, amely miatt a kiszolgáló leállítja a parancs feldolgozását. Ebben az esetben a rendszer kivételt vet ki, függetlenül attól, hogy a hiba hogyan lesz kezelve az InfoMessage eseményben.

A StateChange esemény használata

A StateChange esemény akkor következik be, ha egy Csatlakozás ion állapota megváltozik. A StateChange esemény megkapjaStateChangeEventArgs, amely lehetővé teszi a Csatlakozás állapotának változásának meghatározását az OriginalState és a CurrentState tulajdonságok használatával. Az OriginalState tulajdonság egy ConnectionState enumerálás, amely a módosítás előtt jelzi a Csatlakozás ion állapotát. A CurrentState egy ConnectionState számbavétel, amely a módosítás utáni Csatlakozás állapotát jelzi.

Az alábbi példakód a StateChange esemény használatával ír üzenetet a konzolnak, amikor a Csatlakozás ion állapota megváltozik.

' 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);  
}  

Lásd még