La excepción que se produce cuando SQL Server devuelve una advertencia o un error. Esta clase no se puede heredar.
Espacio de nombres: System.Data.SqlClient
Ensamblado: System.Data (en system.data.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
Public NotInheritable Class SqlException
Inherits DbException
Dim instance As SqlException
[SerializableAttribute]
public sealed class SqlException : DbException
[SerializableAttribute]
public ref class SqlException sealed : public DbException
/** @attribute SerializableAttribute() */
public final class SqlException extends DbException
SerializableAttribute
public final class SqlException extends DbException
Esta clase se crea siempre que el proveedor de datos de .NET Framework para SQL Server encuentra un error generado en el servidor. Los errores en el cliente se producen como excepciones estándar de Common Language Runtime. SqlException siempre contiene al menos una instancia de SqlError.
Los mensajes con un nivel de gravedad igual o menor que 10 son mensajes informativos e indican los problemas ocasionados cuando un usuario no escribe la información correctamente. Los niveles de gravedad del 11 al 16 son errores generados por el usuario y que él mismo puede corregir. Los niveles de gravedad del 17 al 25 indican errores de software o hardware. Cuando se produce un error de niveles 17, 18 o 19, se puede continuar trabajando, aunque es posible que no se pueda ejecutar una determinada instrucción.
SqlConnection permanece abierto cuando el nivel de gravedad es igual o menor que 19. Si el nivel de gravedad es igual o mayor que 20, normalmente, el servidor cierra la conexión SqlConnection. Sin embargo, el usuario puede volver a abrir la conexión y continuar. En ambos casos, el método que ejecuta el comando genera una SqlException.
Para obtener información sobre los mensajes informativos y de advertencia enviados por SQL Server, vea la sección Solución de problemas de los Libros en pantalla de SQL Server. La clase SqlException se asigna a la gravedad de SQL Server.
En el ejemplo siguiente se genera una excepción SqlException y, a continuación, se muestra.
Public Sub ShowSqlException(ByVal connectionString As String)
Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
Dim errorMessages As New StringBuilder()
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
Try
command.Connection.Open()
command.ExecuteNonQuery()
Catch ex As SqlException
Dim i As Integer
For i = 0 To ex.Errors.Count - 1
errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
& "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
& "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
& "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
& "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
Next i
Console.WriteLine(errorMessages.ToString())
End Try
End Using
End Sub
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());
}
}
}
System.Object
System.Exception
System.SystemException
System.Runtime.InteropServices.ExternalException
System.Data.Common.DbException
System.Data.SqlClient.SqlException
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
.NET Framework
Compatible con: 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0, 1.0