Está en la página 1de 8

Capitulo 2: Clases conectadas de ADO.

NET (Parte 1)
Para cargar, modificar y guardar los datos es necesario conectarse a un servidor de base de
datos y de esta forma compartir con otras personas y otras aplicaciones. Aquí es cuando se
deben usar las clases conectadas.

Lección 1: Conexión con el Data Store


La biblioteca ADO.NET contiene clases (que aparecen en System.Data) que se pueden
utilizar para transferir datos entre un Data Store y la aplicación cliente. Esta lección se
centra en estas clases especializadas, como DbConnection y DbCommand, y otras mas
elaboradas como DbProviderFactory y DbProviderFactories.

Uso de providers para mover datos 


Las clases responsables del movimiento de datos entre las clases desconectados se conocen
como clases conectadas o clases de providers (proveedores):
Proveedor Descripción
SQL Server Proporciona acceso de datos para Microsoft SQL Server versión 7.0 o
posterior.Utiliza el espacio de nombres System.Data.SqlClient.
OLE DB Para orígenes de datos que se exponen mediante OLE DB.Utiliza el espacio de
nombres System.Data.OleDb.
OBDC Para orígenes de datos que se exponen mediante ODBC.Utiliza el espacio de
nombres System.Data.Odbc.
 
Primeros pasos con el objeto DbConnection 
Es necesario tener un objeto válido de conexión abierta para acceder a un Data Store. La
clase DbConnection es una clase abstracta de la que hereda el proveedor para crear clases
de proveedores específicos. 

Abrir y cerrar la conexión 


Se necesita una cadena de conexión válida para crear una conexión, después podemos
abrirla conexión y ejecutar comandos y cuando hayamos terminado de trabajar, se debe
cerrar la conexión para liberarlos recursos. 
Ejemplo de conexión: 
---------------------------------------VB----------------------------------------------------
Dim connection = New SqlConnection() 
        connection.ConnectionString = _ 
        "Server=.;Database=northwind;Trusted_Connection=true" 
        connection.Open() 
        'consultas y manejo de datos 
        connection.Close()
---------------------------------------CS-----------------------------------------------------
var connection = new SqlConnection(); 
            connection.ConnectionString = 
            "Server=.;Database=Northwind;Trusted_Connection=true"; 
            connection.Open(); 
            //consultas y manejo de datos 
            connection.Close();

La propiedad ConnectionString es una cadena que contiene pares de valores separados por
un punto y coma. La primera parte de la cadena de conexión ("Server =.") requiere el uso de
una computadora local, pero puede ser sustituido por un nombre real del equipo o dirección
IP. La segunda parte es la cadena de conexión. La última parte indica que va a utilizar su
cuenta de acceso para la autenticación de Windows con SQL Server. 
Al crear una instancia de la clase SqlConnection, un DbConnection se crea porque
SqlConnection hereda de DbConnection. 

Configuración de una cadena de conexión ODBC  


Open Database Connectivity (ODBC) es una de las tecnologías más antiguas que. NET
Framework admite. estas son las opciones más comunes ODBC cadena de conexión.
Keyword Descripcion
DSN El controlador ODBC a utilizar para la conexión
DRIVER Un nombre de origen de datos
Server El nombre del servidor con el que conectarse
Trusted_Connection Especifica que la seguridad se basa en el uso de la cuenta de dominio en la que
actualmente ha iniciado la sesión
Database La base de datos a la que se conecta
DBQ Ruta física a una fuente de datos
 
Algunos ejemplos de ODBC: 
Connection string que usa SQL Server para abrir la base de datos Northwind en MyServer
pasándole usuario y contraseña.
DRIVER={SQL Server}; 
SERVER=MyServer; 
UID=AppUserAccount; 
PWD=Zx%7$ha; 
DATABASE=Northwind;

Connection string que usa SQL Server para abrir la base de datos Northwind en MyServer y
trusted security. 

DRIVER={SQL Server};
SERVER=MyServer; 
Trusted_Connection=yes 
DATABASE=Northwind;
Configuración de una cadena de conexión OLEDB 
Antes se utilizaba para acceder a bases de datos: Object Linking and Embedding para bases
de datos (OLEDB). las opciones más comunes para las cadena de conexión ODBC son:
KEYWORD DESCRIPCION
Data Source El nombre de la base de datos o la ubicación física del archivo
File Name Ubicación física del archivo que contiene la cadena de conexión real
Persist Security Info si es verdadero, devuelve  la cadena completa de conexión que se proporcionó
originalmente. si es falso,contendrá la información que fue originalmente,
menos la información de seguridad .
Provider el driver especifico para conectarse a una base de datos.

Ejemplos de cadenas de conexión OLEDB 

Cadena de conexión almacenada en el archivo de MyAppData.udl. La extensión. Udl


representa vínculo de datos universal. 

FILE NAME=C:\Program Files\MyApp\MyAppData.udl 

Esta cadena de conexión utiliza el controlador de Jet, que es el controlador de acceso, y abre
el archivo de base de datos demo. Recuperación de la cadena de conexión de la conexión
devolverá la conexión que se aprobó originalmente en, menos la información de seguridad. 

Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Program Files\myApp\demo.mdb; 
Persist Security Info=False

Configuración de una cadena de conexión SQL Server 


El proveedor de SQL Server permite acceder a SQL Server 7.0 y versiones posteriores. Para
conectarse a SQL Server 6.5 y versiones anteriores, se debe utilizar el proveedor OLEDB:
(no es case sensitive)
Palabra clave Descripcion
Data Source, Addr, Address, Nombre o direccion IP (128 caracteres max).
Network Address, Server
Failover Partner Para la replicación de bases de datos en SQL Server 2005 y
versiones posteriores
Ruta del archivo que contiene la base de datos a atachar (260
AttachDbFilename, extended  caracteres max)

properties, 

initial file name


Initial Catalog, Database Nombre de la base de datos
Integrated Security,  Para usar una conexión segura cuando la autentificación es con
Trusted_  usuarios de un dominio (puede ser: true, false, o sspi)
Connection
Persist Security Info,  Devuelve la cadena de conexión completa, si es true y sin la
información de seguridad , si es falso.
PersistSecurityInfo
El nombre del usuario para conectarse cuando se usa conexión
User ID, Uid, User segura.
Password, Pwd The password La contraseña para loguearse al SQL server cuando no se usa
conexión segura.
Enlist Lista las conexiones, si es true.
Pooling Grupo de conexiones
Max Pool Size Máximo de conexiones permitidas
Min Pool Size Mínimo de conexiones
Connection Reset Indica si la conexión va a ser reseteada cuando la conexión es
removida del grupo.
MultipleActiveResultSets Permite la recuperación de varios resultados de sólo lectura en la
misma conexión.
Replication Usado para la replicación del SQL
Tiempo  de espera en segundos para que se realiza la conexión
Connect Timeout, Connection 

Timeout, Timeout
Encrypt Si es true, la conexión entre el servidor y el cliente será encriptado
por SSL
Load Balance Timeout,  Tiempo máximo que puede durar la conexión

Connection 

Lifetime
Network Library, Net, Network Dll que se usa para conectarse a SQL Server
The
Packet Size tamaño del paquete que se envía al SQL
Application Name, App Nombre de la aplicación (80 car. max)
Current Language, Language lenguaje de grabación
Workstation ID, Wsid nombre de la computadora cliente
Context Connection Se utiliza con SQLCLR. Cuando se establece en true, una
conexión en el proceso de SQL Server se debe crear. El valor
predeterminado es falso.
Transaction Binding Controla la asociación de conexiones
TrustServerCertificate Si es true, la capa de transporte utiliza SSL para cifrar 

el canal y explorar la cadena de certificados para validar la


confianza. El valor predeterminado es falso.
Type System Version especifica el tipo de vercion del SQL cliente
User Instance se inicia una instancia de SQL Express,utilizando la cuenta del
usuario actual (si es true). El valor predeterminado es falso.
Ejemplo cadenas de conexión de SQL 
Cadena de conexión se conecta a la base de datos Northwind en (localhost), utilizando la
seguridad integrada. Esta conexión se debe hacer dentro de los 30 segundos o se producirá
una excepción ser. La  información  de seguridad no se conservará.
Persist Security Info=False; 
Integrated Security=SSPI; 
database=northwind; 
server=localhost; 
Connect Timeout=30

Cadena de conexión que utiliza la biblioteca de sockets TCP (DBMSSOCN) y se conecta a


la base de datos en el ordenador situado en la dirección IP 10.1.2.3, utilizando el puerto
1433. Definiendo usuario y contraseña. 

Network Library=DBMSSOCN;
Data Source=10.1.2.3,1433; 
Initial Catalog=MyDbName; 
User ID=myUsername; 
Password=x&1W$dF9 

Atachando un archivo de base de datos con SQL Express 

SQL Server Express es un producto de base de datos gratuita que se basa en la tecnología
SQL Server, se instala como parte de la configuración predeterminada de Visual Studio.
NET. 

Para adjuntar un archivo de base de datos local, puede utilizar la siguiente cadena de
conexión. 

Data Source=.\SQLEXPRESS;
AttachDbFilename=C:\MyApplication\Northwind.MDF; 
Integrated Security=True; 
User Instance=True;

User Instance=True inicia una instancia de SQLExpress, utilizando la cuenta del usuario
actual. 
Aunque se puede utilizar SQL Server para conectar a un archivo local, SQL Server no
funciona con User Instance=True. 
AttachDbFile  puede entender la palabra clave | DataDirectory | a usar el directorio de la
aplicación de datos: 

Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\Northwind.MDF; 
Integrated Security=True; 
User Instance=True

¿Cómo se resuelve DataDirectory?  


La biblioteca System.Data.dll contiene una clase que se llama
System.Data.Common.DbConnectionOptions, y con el método ExpandDataDirectory que
trata de obtener la ubicación del directorio de datos del ensamblado actual. 

BaseDirectory contiene la aplicación compilada. (es en el bin\ Debug en la carpeta del


proyecto.) No es necesario tener la base en la carpeta bin, es mejor colocar la base de datos
en la carpeta del proyecto, después en el Explorador de soluciones, haga clic en el archivo
y, en la ventana Propiedades, establecer  "Copiar a directorio de salida" para "Copiar
Siempre" o "Copiar si es posterior." y se copiara en Bin.  

Almacenando la cadena de conexión en el archivo de configuración de la


aplicación 
Se pueden almacenar las propiedades ConnectionString de la máquina, aplicación o el
archivo de configuración Web, por lo que las cadenas de conexión se pueden cambiar sin
necesidad de recompilar la aplicación. 

Se coloca el elemento <connectionStrings> en el elemento


raíz <configuration>. 

<connectionStrings>
<clear />
<add name="nw"
providerName="System.Data.SqlClient"
connectionString=
"Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|Northwind.MDF;
Integrated Security=True;
User Instance=True"/>
</connectionStrings> 

Comunicaciones cifradas en SQL Server 


Para habilitar la comunicación encriptada entre el cliente y el servidor SQL, se debe
instalar  un certificado digital en SQL Server, y después utilizar la configuración de cifrado
en la cadena de conexión para activar el cifrado:  

Data Source=.\SQLEXPRESS; 
AttachDbFilename=C:\MyApplication\Northwind.MDF; 
Integrated Security=True; 
User Instance=True; 
Encrypt=true

Almacenando cadenas de conexión cifradas en Aplicaciones Web 


Las aplicaciones web no tiene un archivo app.config, sino un  Web.config. Es una práctica
común para almacenar cadenas de conexión en el archivo Web.config. Esto hace que sea
fácil de cambiar la cadena de conexión sin necesidad de recompilar la aplicación. Sin
embargo, las cadenas de conexión pueden contener información de inicio de sesión como
nombres de usuario y contraseñas. Seguramente usted no quiere que esta información sea
fácilmente legible por cualquier persona. La solución consiste en cifrar las cadenas de
conexión mediante la utilidad aspnet_regiis.exe para cifrar la sección connectionStrings. 

Para encriptar o desencriptar el contenido de un archivo Web.config mediante se realiza


mediante System.Configuration. DpapiProtectedConfigurationProvider, que utiliza la API
de protección de datos de Windows (DPAPI) , o
System.Configuration.RSAProtectedConfigurationProvider (Esta es la configuración
predeterminada), que utiliza el algoritmo de cifrado RSA para encriptar y/o desencriptar .  

Implementando una ConnectionString encriptada 


Puede cifrar el Web.config se realiza ejecutando el siguiente comando, especificando la ruta
completa a la carpeta (física) de sitio web:  
aspnet_regiis-pef "connectionStrings" "C: \ ... \ EncryptWebSite"

Si se realizan cambios en la sección connectionStrings,los nuevos datos de conexión serán


cifradas, es decir, no se tendrá que ejecutar la utilidad aspnet_regiis de nuevo.
para descifrar la sección connectionStrings se puede realizar mediante el siguiente comando:
 
aspnet_regiis-pdf "connectionStrings" "C: \ ... \ EncryptWebSite"

Agrupación de conexiones 

La agrupación de conexiones es la reutilización de las conexiones existentes con la misma


cadena de conexión en lugar de crear nuevas conexiones. Usa un administrador de conexión
que se encarga de mantener una lista de conexiones disponibles. 

La agrupación de conexiones está controlada por los parámetros:


       Connection Timeout
       Min Pool Size
       Max Pool Size
       Pooling
       Connection Reset
       Load Balancing Timeout (tiempo de vida de la conexión)
       Enlist
¿Dónde está el Pool y cuando se crea? 
La agrupación de conexiones es una tecnología del lado del cliente (se lleva a cabo al
iniciar  la instrucción Open del objeto DbConnection), esta se crea cuando la primera
conexión que se abre. 

¿Cuánto durará la conexión dentro del grupo? 


Una conexión se quita del grupo de conexiones disponibles cuando se usa y luego se cierra
la conexión. Por defecto, tiene una vida de 4 a 8 minutos. 

Excediendo el tamaño del grupo 


El tamaño máximo por defecto de conexión del grupo es de 100. Se puede modificar
cambiando la configuración de la cadena. 

¿Cómo saber si es necesario cambiar este valor? 

Puede utilizar el Monitor de rendimiento para ver el DataProvider.NET para SqlServer /


NumberOfPooledConnections. Si el tamaño máximo que se alcanza la conexión será
bloqueada hasta que la se libere o hasta que caduque el tiempo de espera.  

Cuando desactivar la agrupación? 


Es una buena idea para mantener la agrupación abierta en todo momento, pero si se
necesitan solucionar problemas connectionrelated, se la puede apagar cambiando la
configuración de la agrupación en la cadena de conexión en false
(connectionrelated=false). 

Borrado de la agrupación 
Cuando un servidor de base de datos no está disponible, las conexiones de la agrupacion
queda dañada. Se pueden utilizar dos métodos en el código para recuperarse de una
conexión dañada: ClearPool y ClearAllPools.  

Resumen de la lección 
Esta lección proporciona una visión detallada de las clases ADO.NET conectadas. 
■ clases conectadas , o clases de proveedores (provider classes), son responsables del
movimiento de datos entre la base de datos y las clases desconectados. 
■ Conexión cadenas se pueden almacenar en el archivo app.config o, para las aplicaciones
Web, el archivo Web.config. 
■ Cuando se trabaja con las aplicaciones Web, usted puede cifrar las cadenas de conexión
almacenada en el archivo Web.config mediante el uso de la herramienta aspnet_regiis.exe. 
■ Las conexiones pueden ser combinados en grupos (pools) para proporcionar una
disponibilidad más rápida y una mejor reutilización.

También podría gustarte