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 y .SqlConnection SqlConnection se abre y establece como para Connection .SqlCommand A continuación, el ejemplo llama a ExecuteNonQuery. Para ello, el ExecuteNonQuery se pasa a SqlConnection 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 SqlCommand_ExecuteNonQuery
{
    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 objeto /> de SqlConnection se usa junto con SqlDataAdapter y SqlCommand para aumentar el rendimiento al conectarse a un 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 .

Vea 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.

Note

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 estén siempre cerradas, abra la conexión dentro de un using bloque, como se muestra en el fragmento de código siguiente. Al hacerlo, se garantiza que la conexión se cierre automáticamente cuando el código salga 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.  
}  

Note

Para implementar aplicaciones de alto rendimiento, debe usar la agrupación de conexiones. Al usar la 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 que ejecuta un SqlExceptionSqlCommandSqlConnection , 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 autores de llamadas directos e indirectos tengan permiso suficiente para el código estableciendo demandas de seguridad declarativas o imperativas. SqlConnection hace 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 los niveles de máquina, usuario y empresa. Para obtener más información, consulte Seguridad en .NET. Para ver un ejemplo que muestra cómo usar las demandas de seguridad, consulte Seguridad de acceso de código y ADO.NET.

Para obtener más información sobre cómo controlar mensajes informativos e de advertencia desde el servidor, vea Eventos de conexión. Para obtener más información sobre los errores y mensajes de error del motor de SQL Server, consulte Motor de base de datos Eventos y errores.

Caution

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

Nombre Description
SqlConnection()

Inicializa una nueva instancia de la clase SqlConnection.

SqlConnection(String, SqlCredential)

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

SqlConnection(String)

Inicializa una nueva instancia de la SqlConnection clase cuando se especifica una cadena que contiene la cadena de conexión.

Propiedades

Nombre Description
AccessToken

Obtiene o establece el token de acceso de 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 SqlConnection instancia admite la DbBatch clase .

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 de las entradas de clave de cifrado de columnas en la caché de claves de cifrado de columnas para la característica Always Encrypted . El valor predeterminado es 2 horas. 0 significa que no hay almacenamiento en caché.

ColumnEncryptionQueryMetadataCacheEnabled

Obtiene o establece un valor que indica si el almacenamiento en caché de metadatos de consulta está habilitado (true) o no (false) para las consultas con parámetros que se ejecutan en bases de datos habilitadas para 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 al procesar una consulta de aplicación, el controlador recibe una ruta de acceso de clave que no está en la lista, se producirá un error en la consulta. Esta propiedad proporciona protección adicional contra ataques de seguridad que implican un SQL Server comprometido que proporciona rutas de acceso de clave falsas, lo que puede provocar la pérdida de 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 usada para abrir una base de datos de SQL Server.

ConnectionTimeout

Obtiene el tiempo de espera al intentar establecer una conexión antes de finalizar el intento y generar un error.

Credential

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

Database

Obtiene el nombre de la base de datos actual o de la base de datos que se va a usar después de abrir una conexión.

DataSource

Obtiene el nombre de la instancia de SQL Server a la que se va a conectar.

FireInfoMessageEventOnUserErrors

Obtiene o establece la FireInfoMessageEventOnUserErrors propiedad .

PacketSize

Obtiene el tamaño (en bytes) de los paquetes de red usados para comunicarse con una instancia de SQL Server.

RetryLogicProvider

Obtiene o establece un valor que especifica el SqlRetryLogicBaseProvider objeto 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 está conectado el cliente.

SspiContextProvider

Obtiene o establece la SspiContextProvider instancia para personalizar el contexto SSPI. Si no se establece, se usará el valor predeterminado para la plataforma.

State

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

StatisticsEnabled

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

WorkstationId

Obtiene una cadena que identifica al cliente de base de datos.

Métodos

Nombre Description
BeginTransaction()

Inicia una transacción de base de datos.

BeginTransaction(IsolationLevel, String)

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

BeginTransaction(IsolationLevel)

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

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 un objeto abierto SqlConnection.

ChangePassword(String, SqlCredential, SecureString)

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

ChangePassword(String, String)

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

ClearAllPools()

Vacía el grupo de conexiones.

ClearPool(SqlConnection)

Vacía el grupo de conexiones asociado a la conexión especificada.

Close()

Cierra la conexión a la base de datos. Este es el método preferido para cerrar cualquier conexión abierta.

CreateCommand()

Crea y devuelve un SqlCommand objeto asociado a SqlConnection.

EnlistDistributedTransaction(ITransaction)

Se inscribe en la transacción especificada como una transacción distribuida.

EnlistTransaction(Transaction)

Se inscribe en la transacción especificada como una transacción distribuida.

GetSchema()

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

GetSchema(String, String[])

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

GetSchema(String)

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

Open()

Abre una conexión de base de datos con la configuración de propiedad especificada por .ConnectionString

Open(SqlConnectionOverrides)

Abre una conexión de base de datos con la configuración de propiedad especificada por .ConnectionString

OpenAsync(CancellationToken)

Una versión asincrónica de , que abre una conexión de base de Open()datos con la configuración de propiedad especificada por .ConnectionString El token de cancelación se puede usar para solicitar que se abandone la operación antes de que transcurre el tiempo de espera de conexión. Las excepciones se propagarán a través de la tarea devuelta. Si el tiempo de espera de conexión transcurre sin conectarse correctamente, la tarea devuelta se marcará como errónea con una excepción. La implementación devuelve una tarea sin bloquear el subproceso de llamada para las conexiones agrupadas y no agrupadas.

OpenAsync(SqlConnectionOverrides, CancellationToken)

Una versión asincrónica de , que abre una conexión de base de Open()datos con la configuración de propiedad especificada por .ConnectionString El token de cancelación se puede usar para solicitar que se abandone la operación antes de que transcurre el tiempo de espera de conexión. Las excepciones se propagarán a través de la tarea devuelta. Si el tiempo de espera de conexión transcurre sin conectarse correctamente, la tarea devuelta se marcará como errónea 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 almacén de claves de cifrado de columnas. Esta función solo debe llamarse una vez en una aplicación. Esto realiza 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 realiza 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 la recopilación de estadísticas está habilitada, todos los valores se restablecen a 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 valores de nombre de estadísticas en el momento en que se llama al método .

Eventos

Nombre Description
InfoMessage

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

Implementaciones de interfaz explícitas

Nombre Description
ICloneable.Clone()

Crea un nuevo objeto que es una copia de la instancia actual.

Se aplica a