Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

SqlException-Klasse

 

Veröffentlicht: Oktober 2016

Die Ausnahme, die ausgelöst wird, wenn SQL Server eine Warnung oder einen Fehler zurückgibt. Diese Klasse kann nicht vererbt werden.

Namespace:   System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)

System.Object
  System.Exception
    System.SystemException
      System.Runtime.InteropServices.ExternalException
        System.Data.Common.DbException
          System.Data.SqlClient.SqlException

[SerializableAttribute]
public sealed class SqlException : DbException

NameBeschreibung
System_CAPS_pubpropertyClass

Ruft den Schweregrad der von der .NET Framework-Datenanbieter für SQL Server zurückgegebenen Fehlers ab.

System_CAPS_pubpropertyClientConnectionId

Stellt die Client-Verbindungs-ID. Weitere Informationen finden Sie unter Datenablaufverfolgung in ADO.NET.

System_CAPS_pubpropertyData

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen.(Geerbt von „Exception“.)

System_CAPS_pubpropertyErrorCode

Ruft das HRESULT des Fehlers ab.(Geerbt von „ExternalException“.)

System_CAPS_pubpropertyErrors

Ruft eine Auflistung von mindestens einem SqlError Objekte, die ausführliche zu Ausnahmen, die von der .NET Framework-Datenanbieter für SQL Server generiert Informationen.

System_CAPS_pubpropertyHelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.(Geerbt von „Exception“.)

System_CAPS_pubpropertyHResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.(Geerbt von „Exception“.)

System_CAPS_pubpropertyInnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.(Geerbt von „Exception“.)

System_CAPS_pubpropertyLineNumber

Ruft die Zeilennummer in der Transact-SQL-Befehlsbatch oder einer gespeicherten Prozedur, der den Fehler generiert hat.

System_CAPS_pubpropertyMessage

Ruft eine Meldung ab, die die aktuelle Ausnahme beschreibt.(Geerbt von „Exception“.)

System_CAPS_pubpropertyNumber

Ruft eine Nummer ab, die den Fehlertyp angibt.

System_CAPS_pubpropertyProcedure

Ruft den Namen der gespeicherten Prozedur oder des Remoteprozeduraufrufs (RPC) ab, der diesen Fehler generiert hat.

System_CAPS_pubpropertyServer

Ruft den Namen des Computers, der eine Instanz von SQL Server ausgeführt wird, die den Fehler generiert hat.

System_CAPS_pubpropertySource

Ruft den Namen des Providers ab, der den Fehler generiert hat.(Überschreibt Exception.Source.)

System_CAPS_pubpropertyStackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.(Geerbt von „Exception“.)

System_CAPS_pubpropertyState

Ruft einen numerischen Fehlercode von SQL Server, die einen Fehler, Warnung oder "keine Daten gefunden"-Meldung darstellt. Weitere Informationen über das Decodieren dieser Werte finden Sie unter SQL Server-Onlinedokumentation.

System_CAPS_pubpropertyTargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.(Geerbt von „Exception“.)

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_pubmethodGetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist.(Geerbt von „Exception“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Legt SerializationInfo mit Informationen zur Ausnahme fest.(Überschreibt Exception.GetObjectData(SerializationInfo, StreamingContext).)

System_CAPS_pubmethodGetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.(Geerbt von „Exception“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge, die für die aktuelle SqlException -Objekt und enthält die Clientverbindungs-ID (Weitere Informationen finden Sie unter ClientConnectionId).(Überschreibt ExternalException.ToString().)

This class is created whenever the .NET Framework Data Provider for SQL Server encounters an error generated from the server. (Client side errors are thrown as standard common language runtime exceptions.) T:System.Data.SqlClient.SqlException always contains at least one instance of T:System.Data.SqlClient.SqlError.

Messages that have a severity level of 10 or less are informational and indicate problems caused by mistakes in information that a user has entered. Severity levels from 11 through 16 are generated by the user, and can be corrected by the user. Severity levels from 17 through 25 indicate software or hardware errors. When a level 17, 18, or 19 error occurs, you can continue working, although you might not be able to execute a particular statement.

The T:System.Data.SqlClient.SqlConnection remains open when the severity level is 19 or less. When the severity level is 20 or greater, the server ordinarily closes the T:System.Data.SqlClient.SqlConnection. However, the user can reopen the connection and continue. In both cases, a T:System.Data.SqlClient.SqlException is generated by the method executing the command.

For information about the warning and informational messages sent by SQL Server, see the Troubleshooting section of SQL Server Books Online. The T:System.Data.SqlClient.SqlException class maps to SQL Server severity.

The following is general information on handling exceptions. Your code should catch exceptions to prevent the application from crashing and to allow displaying a relevant error message to the user. You can use database transactions to ensure that the data is consistent regardless of what happens in the client application (including a crash). Features like System.Transaction.TransactionScope or the BeginTransaction method (in System.Data.OleDb.OleDbConnection, System.Data.ODBC.ODBCConnection, and System.Data.SqlClient.SqlConnection) ensure consistent data regardless of exceptions raised by a provider. Transactions can fail, so catch failures and retry the transaction.

Note that beginning with .NET Framework 4.5, T:System.Data.SqlClient.SqlException can return an inner T:System.ComponentModel.Win32Exception.

The exception class of a .Net Framework data provider reports provider-specific errors. For example System.Data.Odbc has OdbcException, System.Data.OleDb has OleDbException, and System.Data.SqlClient has SqlException. For the best level of error detail, catch these exceptions and use the members of these exception classes to get details of the error.

In addition to the provider-specific errors, .NET Framework data provider types can raise .NET Framework exceptions such as System.OutOfMemoryException and System.Threading.ThreadAbortException. Recovery from these exceptions may not be possible.

Bad input can cause a .NET Framework data provider type to raise an exception such as System.ArgumentException or System.IndexOutOfRangeException. Calling a method at the wrong time can raise System.InvalidOperationException.

So, in general, write an exception handler that catches any provider specific exceptions as well as exceptions from the common language runtime. These can be layered as follows:

Try {
   // code here
}
catch (SqlException odbcEx) {
   // Handle more specific SqlException exception here.
}
catch (Exception ex) {
   // Handle generic ones here.
}

Or:

Try {
   // code here
}
catch (Exception ex) {
   if (ex is SqlException) {
      // Handle more specific SqlException exception here.
   }
   Else {
      // Handle generic ones here.
   }
}

It is also possible for a .NET Framework data provider method call to fail on a thread pool thread with no user code on the stack. In this case, and when using asynchronous method calls, you must register the E:System.AppDomain.UnhandledException event to handle those exceptions and avoid application crash.

The following example generates a T:System.Data.SqlClient.SqlException and then displays the exception.

public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";
    StringBuilder errorMessages = new StringBuilder();

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            for (int i = 0; i < ex.Errors.Count; i++)
            {
                errorMessages.Append("Index #" + i + "\n" +
                    "Message: " + ex.Errors[i].Message + "\n" +
                    "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                    "Source: " + ex.Errors[i].Source + "\n" +
                    "Procedure: " + ex.Errors[i].Procedure + "\n");
            }
            Console.WriteLine(errorMessages.ToString());
        }
    }
}

.NET Framework
Verfügbar seit 1.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: