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.

clip_image001[4]
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, Network Address, Server


Nombre o direccion IP (128 caracteres max).

Failover Partner

Para la replicación de bases de datos en SQL Server 2005 y versiones posteriores


AttachDbFilename, extended

properties,


initial file name

Ruta del archivo que contiene la base de datos a atachar (260 caracteres max)

Initial Catalog, Database

Nombre de la base de datos


Integrated Security,

Trusted_


Connection


Para usar una conexión segura cuando la autentificación es con usuarios de un dominio (puede ser: true, false, o sspi)


Persist Security Info,

PersistSecurityInfo

Devuelve la cadena de conexión completa, si es true y sin la información de seguridad , si es falso.


User ID, Uid, User

El nombre del usuario para conectarse cuando se usa conexión 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


Connect Timeout, Connection

Timeout, Timeout

Tiempo  de espera en segundos para que se realiza la conexión

Encrypt

Si es true, la conexión entre el servidor y el cliente será encriptado por SSL


Load Balance Timeout,

Connection


Lifetime

Tiempo máximo que puede durar la conexión

Network Library, Net, Network The

Dll que se usa para conectarse a SQL Server

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.

No hay comentarios:

Publicar un comentario