SqlConnection Clase

Definición

Representa una conexión a una base de datos de SQL Server. Esta clase no puede heredarse.

public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
    inherit DbConnection
    interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
Herencia
SqlConnection
Implementaciones

Ejemplos

En el ejemplo siguiente se crea un SqlCommand objeto y .SqlConnection SqlConnection se abre y establece como para Connection .SqlCommand A continuación, el ejemplo llama a ExecuteNonQuery. Para ello, ExecuteNonQuery se pasa un cadena de conexión y una cadena de consulta que es una instrucción INSERT de Transact-SQL. La conexión se cierra automáticamente cuando el código sale del bloque using.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    class Program
    {
        static void Main()
        {
            string str = "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
            string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
            CreateCommand(qs, str);
        }
        private static void CreateCommand(string queryString,
            string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(
                       connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}

Comentarios

Un SqlConnection objeto representa una sesión única para un origen de datos SQL Server. Con un sistema de base de datos cliente/servidor, equivale a una conexión de red al servidor. SqlConnectionse usa junto con SqlDataAdapter y SqlCommand para aumentar el rendimiento al conectarse a una base de datos de Microsoft SQL Server. Para todos los productos de SQL Server de terceros y otros orígenes de datos compatibles con OLE DB, use OleDbConnection.

Al crear una instancia de SqlConnection, todas las propiedades se establecen en sus valores iniciales. Para obtener una lista de estos valores, consulte el SqlConnection constructor .

Consulte ConnectionString para obtener una lista de las palabras clave de un cadena de conexión.

SqlConnection Si sale del ámbito, no se cerrará. Por lo tanto, debe cerrar explícitamente la conexión llamando a Close o Dispose. Close y Dispose son funcionalmente equivalentes. Si el valor Pooling de agrupación de conexiones se establece true en o yes, la conexión subyacente se devuelve al grupo de conexiones. Por otro lado, si Pooling se establece false en o no, la conexión subyacente al servidor se cierra realmente.

Nota:

Los eventos de inicio y cierre de sesión no se provocarán en el servidor cuando se busque una conexión desde el grupo de conexiones o se devuelva a éste, puesto que la conexión no está cerrada realmente cuando se devuelve al grupo de conexiones. Para obtener más información, vea Agrupación de conexiones de SQL Server (ADO.NET).

Para asegurarse de que las conexiones siempre están cerradas, abra la conexión dentro de un using bloque, como se muestra en el siguiente fragmento de código. Al hacerlo, 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.  
    }  

Nota

Para implementar aplicaciones de alto rendimiento, debe usar la agrupación de conexiones. Cuando se usa el proveedor de datos de .NET Framework para SQL Server, no es necesario habilitar la agrupación de conexiones porque el proveedor lo administra automáticamente, aunque puede modificar algunas opciones de configuración. Para obtener más información, vea Agrupación de conexiones de SQL Server (ADO.NET).

Si el método genera un SqlException objeto que ejecuta , SqlCommandSqlConnection permanece abierto cuando el nivel de gravedad es 19 o menos. Cuando el nivel de gravedad es 20 o superior, el servidor normalmente cierra .SqlConnection Sin embargo, el usuario puede volver a abrir la conexión y continuar.

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

Para obtener más información sobre el control de mensajes informativos y de advertencia desde el servidor, vea Eventos de conexión. Para obtener más información sobre SQL Server errores y mensajes de error del motor, vea Eventos y errores del motor de base de datos.

Precaución

Puede forzar TCP en lugar de memoria compartida. Puede hacerlo mediante el prefijo tcp: al nombre del servidor en el cadena de conexión o puede usar localhost.

Constructores

SqlConnection()

Inicializa una nueva instancia de la clase SqlConnection.

SqlConnection(String)

Inicializa una nueva instancia de la clase SqlConnection, dada una cadena que contiene la cadena de conexión.

SqlConnection(String, SqlCredential)

Inicializa una nueva instancia de la clase SqlConnection a la que se proporciona una cadena de conexión que no usa Integrated Security = true y un objeto SqlCredential que contiene el identificador de usuario y la contraseña.

Propiedades

AccessToken

Obtiene o establece el token de acceso para la conexión.

AccessTokenCallback

Obtiene o establece la devolución de llamada del token de acceso para la conexión.

CanCreateBatch

Obtiene un valor que indica si esta instancia de SqlConnection admite la clase DbBatch.

ClientConnectionId

Identificador de conexión del intento de conexión más reciente, independientemente de si el intento se realizó correctamente o no.

ColumnEncryptionKeyCacheTtl

Obtiene o establece el período de vida para entradas de clave de cifrado de columnas en la memoria caché de clave de cifrado de columnas para la características Always Encrypted. El valor predeterminado es 2 horas. 0 significa que no hay almacenamiento en caché en absoluto.

ColumnEncryptionQueryMetadataCacheEnabled

Obtiene o establece un valor que indica si el almacenamiento en caché de metadatos de consulta está habilitado (true) o no (false) para consultas parametrizadas que se ejecutan en bases con la función Always Encrypted. El valor predeterminado es true.

ColumnEncryptionTrustedMasterKeyPaths

Permite establecer una lista de rutas de acceso de confianza a la clave para un servidor de base de datos. Si durante el procesamiento de una consulta de aplicación, el controlador recibe una ruta de acceso de clave que no se encuentre en la lista, la consulta generará error. Esta propiedad proporciona protección adicional contra los ataques de seguridad que implican un servidor SQL Server comprometido que proporciona rutas de acceso a la clave falsas que pueden provocar la divulgación de las credenciales del almacén de claves.

CommandTimeout

Obtiene el tiempo de espera predeterminado (en segundos) antes de finalizar el intento de ejecutar un comando y generar un error. El valor predeterminado es 30 segundos.

ConnectionString

Obtiene o establece la cadena que se utiliza para abrir una base de datos de SQL Server.

ConnectionTimeout

Obtiene el tiempo de espera para intentar establecer una conexión antes de detenerse y generar un error.

Credential

Obtiene o establece el objeto SqlCredential para esta conexión.

Database

Obtiene el nombre de la base de datos actual o de la que se va a utilizar una vez que se abre la conexión.

DataSource

Obtiene el nombre de la instancia de SQL Server con la que se va a establecer la conexión.

FireInfoMessageEventOnUserErrors

Obtiene o establece la propiedad FireInfoMessageEventOnUserErrors.

PacketSize

Obtiene el tamaño en bytes de los paquetes de red utilizados para establecer comunicación con una instancia de SQL Server.

RetryLogicProvider

Obtiene o establece un valor que especifica el objeto SqlRetryLogicBaseProvider enlazado a este comando.

ServerProcessId

Obtiene el identificador de proceso del servidor (SPID) de la conexión activa.

ServerVersion

Obtiene una cadena que contiene la versión de la instancia de SQL Server a la que se conecta el cliente.

State

Indica el estado de SqlConnection durante la operación más reciente de la red realizada en la conexión.

StatisticsEnabled

Cuando se establece en true, permite la obtención de estadísticas para la conexión actual.

WorkstationId

Obtiene una cadena que identifica el cliente de bases de datos.

Métodos

BeginTransaction()

Inicia una transacción de base de datos.

BeginTransaction(IsolationLevel)

Inicia una transacción de base de datos con el nivel de aislamiento especificado.

BeginTransaction(IsolationLevel, String)

Inicia una transacción de la base de datos con el nivel de aislamiento y el nombre de transacción especificados.

BeginTransaction(String)

Inicia una transacción de base de datos con el nombre de transacción especificado.

ChangeDatabase(String)

Cambia la base de datos actual de una conexión SqlConnection abierta.

ChangePassword(String, SqlCredential, SecureString)

Cambia la contraseña de SQL Server para el usuario indicado en el objeto de SqlCredential.

ChangePassword(String, String)

Cambia la contraseña de SQL Server para el usuario indicado en la cadena de conexión a la nueva contraseña proporcionada.

ClearAllPools()

Vacía la agrupación de conexiones.

ClearPool(SqlConnection)

Vacía la agrupación de conexiones asociada a la conexión especificada.

Close()

Cierra la conexión con la base de datos. Es el método preferido para cerrar cualquier conexión abierta.

CreateCommand()

Crea y devuelve un objeto SqlCommand asociado a la conexión SqlConnection.

EnlistDistributedTransaction(ITransaction)

Se da de alta en la transacción especificada como una transacción distribuida.

EnlistTransaction(Transaction)

Se da de alta en la transacción especificada como una transacción distribuida.

GetSchema()

Devuelve información de esquema para el origen de datos de SqlConnection. Para obtener más información sobre el esquema, vea Colecciones de esquemas de SQL Server.

GetSchema(String)

Devuelve información de esquema para el origen de datos de SqlConnection utilizando la cadena especificada para el nombre del esquema.

GetSchema(String, String[])

Devuelve información de esquema para el origen de datos de SqlConnection utilizando la cadena especificada para el nombre del esquema y la matriz de cadena determinada para los valores de restricción.

Open()

Abre una conexión de base de datos con los valores de propiedad que especifica ConnectionString.

Open(SqlConnectionOverrides)

Abre una conexión de base de datos con los valores de propiedad que especifica ConnectionString.

OpenAsync(CancellationToken)

Una versión asincrónica de Open(), que abre una conexión a bases de datos con los valores de propiedad especificados por ConnectionString. Token de cancelación que se puede usar para solicitar que se abandone la operación antes de que transcurra el tiempo de espera de la conexión. Las excepciones se propagarán mediante la tarea devuelta. Si el tiempo de espera de conexión transcurre sin conectar correctamente, la tarea devuelta se marcará como error con una excepción. La implementación devuelve una tarea sin bloquear el subproceso de llamada para las conexiones agrupadas y no agrupadas.

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Registra los proveedores de almacenamiento de claves de cifrado de columnas. Esta función solo se debe llamar una vez en una aplicación. Esto hace una copia superficial del diccionario para que la aplicación no pueda modificar la lista de proveedores personalizados una vez que se haya establecido.

Los proveedores integrados de almacén de claves maestras de columna que están disponibles para el almacén de certificados de Windows, el almacén de CNG y CSP están registrados previamente.

RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

Registra los proveedores de almacén de claves de cifrado en la SqlConnection instancia de . Si se ha llamado a esta función, se omitirán los proveedores registrados mediante los métodos estáticos RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) . Se puede llamar a esta función más de una vez. Esto hace una copia superficial del diccionario para que la aplicación no pueda modificar la lista de proveedores personalizados una vez que se haya establecido.

ResetStatistics()

Si se habilita la obtención de estadísticas, todos los valores se restablecen en cero.

RetrieveInternalInfo()

Devuelve una colección de pares de valores de nombre de propiedades internas en el momento en que se llama al método .

RetrieveStatistics()

Devuelve una colección de pares de nombre y valor de las estadísticas cuando se llama el método.

Eventos

InfoMessage

Se produce cuando SQL Server devuelve un mensaje informativo o de advertencia.

Implementaciones de interfaz explícitas

ICloneable.Clone()

Crea un nuevo objeto copiado de la instancia actual.

Se aplica a