Esta documentación está archivada y no tiene mantenimiento.

SqlConnection (Clase)

Actualización: noviembre 2007

Representa una conexión abierta con una base de datos de SQL Server. Esta clase no se puede heredar.

Espacio de nombres:  System.Data.SqlClient
Ensamblado:  System.Data (en System.Data.dll)

public sealed class SqlConnection : DbConnection, 
	ICloneable
public final class SqlConnection extends DbConnection implements ICloneable
public final class SqlConnection extends DbConnection implements ICloneable

Un objeto SqlConnection representa una única sesión con un origen de datos de SQL Server. Con un sistema de bases de datos de cliente y servidor, equivale a una conexión de red al servidor. SqlConnection se utiliza junto con SqlDataAdapter y SqlCommand para aumentar el rendimiento de la conexión a una base de datos de Microsoft SQL Server. Con productos SQL Server de otros proveedores y otros orígenes de datos compatibles con OLE DB, se debe utilizar OleDbConnection.

Cuando se crea una instancia de SqlConnection, se establecen todas las propiedades en sus valores iniciales. Para obtener una lista de esos valores, vea el constructor SqlConnection.

Si la conexión SqlConnection está fuera de ámbito, no se cerrará. Por tanto, debe cerrar la conexión explícitamente mediante una llamada al método Close o Dispose. Close y Dispose tienen una funcionalidad equivalente. Si el valor de agrupación de conexiones Pooling se establece en true o yes, la conexión subyacente se devuelve al grupo de conexiones. Por otro lado, si Pooling se establece en false o no, la conexión subyacente al servidor se cerrará.

sd2728ad.alert_note(es-es,VS.90).gifNota:

No se provocarán eventos de inicio y cierre de sesión en el servidor cuando se capture una conexión del grupo de conexiones o se devuelva una conexión al grupo de conexiones, porque realmente no se cierra la conexión cuando se devuelve al grupo de conexiones. Para obtener más información, vea Agrupación de conexiones en SQL Server (ADO.NET).

Para garantizar que las conexiones se cierren siempre, abra la conexión dentro de un bloque using, como se muestra en el fragmento de código siguiente. Haciendo esto se garantiza que la conexión se cierra automáticamente cuando el código sale del bloque.

Using connection As New SqlConnection(connectionString)
    connection.Open()
    ' Do work here; connection closed on following line.
End Using
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        // Do work here; connection closed on following line.
    }
sd2728ad.alert_note(es-es,VS.90).gifNota:

Para implementar aplicaciones de alto rendimiento, es necesario utilizar la agrupación de conexiones. Cuando se utiliza el proveedor de datos de .NET Framework para SQL Server, no es necesario habilitar una agrupación de conexiones, ya que el proveedor la administra automáticamente, aunque se pueden modificar algunos valores. Para obtener más información, vea Agrupación de conexiones en SQL Server (ADO.NET).

Si el método que ejecuta un objeto SqlCommand genera una excepción SqlException, SqlConnection permanece abierta 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.

Una aplicación que crea una instancia del objeto SqlConnection puede requerir que todos los llamadores directos e indirectos tengan permisos suficientes en el código estableciendo solicitudes de seguridad declarativas o imperativas. SqlConnection realiza solicitudes de seguridad utilizando el objeto SqlClientPermission. Los usuarios pueden comprobar que el código tiene los permisos adecuados mediante el objeto SqlClientPermissionAttribute. Los usuarios y administradores también pueden utilizar la herramienta Herramienta de la directiva de seguridad de acceso a código (Caspol.exe) para modificar la directiva de seguridad en los niveles de equipo, usuario y empresa. Para obtener más información, vea Seguridad en .NET Framework. Para obtener un ejemplo que muestra cómo utilizar las peticiones de seguridad, vea Seguridad de acceso del código y ADO.NET.

sd2728ad.alert_note(es-es,VS.90).gifNota:

Si utiliza Microsoft .NET Framework versión 1.0, es necesario establecer el permiso con nombre FullTrust para conectarse a SQL Server mediante el método Open. Este requisito no es necesario si utiliza la versión 1.1 de .NET Framework o una posterior. Para obtener más información, vea Solicitar permisos y Conjuntos de permisos con nombre.

Para obtener más información sobre el tratamiento de mensajes informativos y de advertencia del servidor, vea Eventos de conexión (ADO.NET). Los errores del motor de SQL Server y los mensajes de error se documentan en los libros en pantalla de SQL Server.

sd2728ad.alert_caution(es-es,VS.90).gifPrecaución:

ADO.NET 2.0 no admite comandos asincrónicos en la memoria compartida para SQL Server 2000 o anterior. Sin embargo, puede forzar el uso de TCP en lugar de la memoria compartida. Para ello, ha de agregar tcp: como prefijo al nombre del servidor en la cadena de conexión o utilizar el host local.

TopicLocation
Cómo: Crear conexiones a bases de datos de SQL ServerAcceso a datos en Visual Studio
Cómo: Crear conexiones a bases de datos de SQL ServerAcceso a datos en Visual Studio

En el siguiente ejemplo se crean un objeto SqlCommand y un objeto SqlConnection. Se abre la conexión SqlConnection y se establece como la propiedad Connection de SqlCommand. A continuación, en el ejemplo se llama a ExecuteNonQuery y se cierra la conexión. Para ello, se pasa a ExecuteNonQuery una cadena de conexión y una cadena de consulta que es una instrucción Transact-SQL INSERT.

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
        Console.WriteLine("State: {0}", connection.State);
    }
}

static private string GetConnectionString()
{
    // To avoid storing the connection string in your code, 
    // you can retrieve it from a configuration file, using the 
    // System.Configuration.ConfigurationSettings.AppSettings property 
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;";
}


Todos los miembros static (Shared en Visual Basic) públicos 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0
Mostrar: