clase 9 curso microsoft.netcurso microsoft.net i.s.f.t. n° 182i.s.f.t. n° 182

Post on 11-Apr-2015

110 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Clase 9Clase 9•Curso Microsoft .NETCurso Microsoft .NET

•I.S.F.T. N° 182I.S.F.T. N° 182

La cadena de conexiónLa cadena de conexión

La mejor seguridad, es la seguridad La mejor seguridad, es la seguridad integradaintegrada Disminuye la posibilidad de acceso no Disminuye la posibilidad de acceso no

autorizadoautorizado Facilita el manejo de permisos de accesoFacilita el manejo de permisos de acceso No requiere mayor mantenimiento del No requiere mayor mantenimiento del

lado de la baselado de la base Un nuevo usuario sólo debe agregarse al Un nuevo usuario sólo debe agregarse al

dominio y al grupo adecuado en un solo punto dominio y al grupo adecuado en un solo punto administrativoadministrativo

La cadena de Conexión (2)La cadena de Conexión (2)

Cuando no podemos acceder a la Cuando no podemos acceder a la seguridad del dominio, entonces seguridad del dominio, entonces usamos seguridad de SQL Serverusamos seguridad de SQL Server Proveedores externos de sitiosProveedores externos de sitios

Requiere mayor cuidado en la Requiere mayor cuidado en la configuración de la cadena de configuración de la cadena de conexiónconexión EncriptaciónEncriptación Almacenamiento en ubicaciones no Almacenamiento en ubicaciones no

comunescomunes

Agregando connection string al Agregando connection string al web.configweb.config

<configuration> <connectionStrings> <add name="northwind"

connectionString="server=(local);database=Northwind;Integrated

Security=SSPI" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>

Accediendo desde el código al Accediendo desde el código al web.configweb.config

SqlConnection connection = new SqlConnection( ConfigurationManager.ConnectionStrings["ADVENTUREWORKSConnectionString"].ConnectionString);

Acceso de lectura/escritura a Acceso de lectura/escritura a especificaciones de configuraciónespecificaciones de configuración..Ejemplo en C#:Ejemplo en C#:

DataAdapterDataAdapter

Obteniendo datos (CLR)Obteniendo datos (CLR)

ConnectionConnection CommandCommand DataReaderDataReader

GetByte(n)GetByte(n)GetString(n)GetString(n)GetInt32(n)GetInt32(n)

……

ConnectionConnection CommandCommand DataReaderDataReader

DataSetDataSet

Obteniendo Datos (SQL)Obteniendo Datos (SQL)

Sentencias SQLSentencias SQL Excepto que sean muy similares con Excepto que sean muy similares con

alguna anterior, requieren un análisis alguna anterior, requieren un análisis completo cada vez que se ejecutancompleto cada vez que se ejecutan Si sólo varía el valor de los argumentos Si sólo varía el valor de los argumentos

utilizados, SQL Server es capaz de mantener utilizados, SQL Server es capaz de mantener en caché las sentencias en caché las sentencias

Procedimientos AlmacenadosProcedimientos Almacenados Sólo consumen el tiempo de la obtención Sólo consumen el tiempo de la obtención

de datosde datos Permiten implementar mejores Permiten implementar mejores

mecanismos de autorización de accesomecanismos de autorización de acceso

Actualizando datos (SQL)Actualizando datos (SQL)

ActualizarActualizar

InsertarInsertar

EliminarEliminar

UPDATE OradoresSET Nombre = 'Nombre', Apellido = 'Apellido', EsInternacional = 1where Id=3

INSERT INTO Oradores(Nombre, Apellido, EsInternacional)VALUES (N'Nombre', N'Apellido', 1)where Id=3

DELETE FROM Oradores WHERE (Id = 3)

Actualizando datos (SQL) (2)Actualizando datos (SQL) (2)

Procedimientos AlmacenadosProcedimientos Almacenados Más rápidosMás rápidos Más segurosMás seguros

CREATE/ALTER Procedure [Oradores_Update]@Id int = null, @Nombre nvarchar(100) = null, @Apellido nvarchar(100) = null, @EsInternacional bit = null, @EsRegional bit = null, @Descripcion varchar(8000) = null, @UrlFoto nvarchar(100) = null, @EsGenerico bit = null, @EsINETA bit = null, @Passport nvarchar(200) = null, @EsAcademico bit = nulllAS Update [Oradores]SET

[Id]=@Id, [Nombre]=@Nombre, [Apellido]=@Apellido, [EsInternacional]=@EsInternacional, [EsRegional]=@EsRegional,[Descripcion]=@Descripcion, [UrlFoto]=@UrlFoto, [EsGenerico]=@EsGenerico, [EsINETA]=@EsINETA, [Passport]=@Passport, [EsAcademico]=@EsAcademico

where Id=@Id

Utilizando procedimientos Utilizando procedimientos almacenadosalmacenados Ejecutar cualquier sentencia SQL significaEjecutar cualquier sentencia SQL significa

Control de sintaxisControl de sintaxis Control de validez de los objetos implicadosControl de validez de los objetos implicados CompilaciónCompilación Cálculo del plan de ejecución (Query Plan)Cálculo del plan de ejecución (Query Plan) Ejecución y obtención de resultadosEjecución y obtención de resultados

Ejecutar cualquier procedimiento almacenado Ejecutar cualquier procedimiento almacenado significasignifica Ejecución y obtención de resultadosEjecución y obtención de resultados (el resto se realiza al guardar el PA en la base de (el resto se realiza al guardar el PA en la base de

datos)datos)

Objeto Command Representa una Instrucción SQL o un procedimiento

almacenado que ejecuta en un origen de datos Expone 4 métodos importantes para devolver datos:

ExecuteReader() ExecuteScalar() ExecuteNonQuery() ExecuteXMLReader()

Llamada a StoresProcedures utilizando Parameters Objeto Command especifico para cada proveedor:

SQLCommand ODBCCommand OLEDBCommand OracleCommand

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Objeto Command – Ejemplo 1 de SQLCommand

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Objeto Command – Ejemplo 2 de SQLCommand

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Objeto DataReader Forward-only / Read-only Acceso rápido a los datos Conectado al origen La conexión la maneja usted mismo Los datos se manejan por código o a través de

controles enlazados Usa pocos recursos

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Objeto DataReader – Ejemplo 1ADO.NET 2.0ADO.NET 2.0

AD

O.N

ET

2.0

AD

O.N

ET

2.0

Objeto DataReader – Ejemplo 2ADO.NET 2.0ADO.NET 2.0

AD

O.N

ET

2.0

AD

O.N

ET

2.0

Gestiona el intercambio de datos entre DataTables y un Data Source .Fill (DataSet o DataTable) .Update (DataSet o DataTable)

Provee relaciones entre tablas y columnas

El usuario puede saltarse los comandos Insert/Update/Delete

Objeto DataAdapterADO.NET 2.0ADO.NET 2.0

AD

O.N

ET

2.0

AD

O.N

ET

2.0

DataAdapterDataAdapterDataAdapterDataAdapter

SelectCommandSelectCommand

InsertCommandInsertCommand

UpdateCommandUpdateCommand

DeleteCommandDeleteCommand

TableMappingsTableMappings

DatabaseDatabaseDatabaseDatabase

DataTableDataTableDataTableDataTable

DataSetDataSetDataSetDataSet

Objeto DataAdapter

DataTableDataTableDataTableDataTableDataTableDataTableDataTableDataTable

Origen de Datos

AdaptadorConjunto de Resultados

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Rellenar: DataAdapter.Fill(DataTable)Objeto DataAdapter - Ejemplo

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Guardar Cambios: DataAdapter.Update(DataTable)Objeto DataAdapter - Ejemplo

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

DataBinding (Data Sources) Mecanismo de Enlaces entre Objetos contenedores

de datos (DataSet, WebService, DataBase) y los Controles WinForms

Operaciones automatizadas No requiere escribir código Permite Navegación, Edición de registros Múltiples Origenes de Datos:

DataSet Web Service’s DataBase

Se Establece en tiempo de Diseño

ADO.NET 2.0ADO.NET 2.0A

DO

.NE

T 2

.0A

DO

.NE

T 2

.0

Buenas PrácticasBuenas Prácticas

Las consultas deben ser específicas en Las consultas deben ser específicas en cuanto a las columnas que deben cuanto a las columnas que deben devolverdevolver Select * from tabla Select * from tabla

Un error común: denominar los Un error común: denominar los procedimientos almacenados procedimientos almacenados comenzando con comenzando con sp_sp_ Sp_ significa “system procedure” no Sp_ significa “system procedure” no

“Store procedure”“Store procedure”

Capa de acceso a datosCapa de acceso a datos

Encapsular la funcionalidad en un Encapsular la funcionalidad en un componente comúncomponente común ReusableReusable No vinculado a una base o aplicación en No vinculado a una base o aplicación en

particularparticular

Definir en el mismo las funcionalidades Definir en el mismo las funcionalidades esenciales parametrizadasesenciales parametrizadas Esto conlleva consumir más recursos de Esto conlleva consumir más recursos de

conexión a la baseconexión a la base Implementar caché de accionesImplementar caché de acciones

PASOS A SEGUIR PARA METODOS DAO CON PASOS A SEGUIR PARA METODOS DAO CON INSERT, UPDATE y DELETE:INSERT, UPDATE y DELETE:

Crear objeto SqlConnection con la correspondiente Crear objeto SqlConnection con la correspondiente connection string.connection string.

Abrir la conexión (connection.Open()).Abrir la conexión (connection.Open()). Crear e instanciar objeto SqlCommand.Crear e instanciar objeto SqlCommand. Setear el tipo de comando (CommandType)Setear el tipo de comando (CommandType) Setear el CommandText con la query a ejecutar o el Setear el CommandText con la query a ejecutar o el

nombre del stored procedure.nombre del stored procedure. En caso de ser un stored procedure, crear En caso de ser un stored procedure, crear

SqlParameters necesarios y asignarle los valores.SqlParameters necesarios y asignarle los valores. Ejecutar el método ExecuteNonQuery() del objeto Ejecutar el método ExecuteNonQuery() del objeto

command.command. CERRAR LA CONEXIÓN: connection.Close()CERRAR LA CONEXIÓN: connection.Close()

PASOS A SEGUIR PARA METODOS DAO CON PASOS A SEGUIR PARA METODOS DAO CON SELECT:SELECT:

Crear objeto SqlConnection con la correspondiente Crear objeto SqlConnection con la correspondiente connection string.connection string.

Abrir la conexión (connection.Open()).Abrir la conexión (connection.Open()). Crear e instanciar objeto DataSet para almacenar los Crear e instanciar objeto DataSet para almacenar los

resultados.resultados. Crear e instanciar objeto SqlCommand.Crear e instanciar objeto SqlCommand. Setear el tipo de comando (CommandType)Setear el tipo de comando (CommandType) Setear el CommandText con la query a ejecutar o el nombre Setear el CommandText con la query a ejecutar o el nombre

del stored procedure.del stored procedure. En caso de ser un stored procedure, crear SqlParameters En caso de ser un stored procedure, crear SqlParameters

necesarios y asignarle los valores.necesarios y asignarle los valores. Crear objeto SqlDataAdapter y pasarle en el constructor Crear objeto SqlDataAdapter y pasarle en el constructor

nuestro SqlCommand creado anteriormente.nuestro SqlCommand creado anteriormente. Ejecutar el método Fill() del SqlDataAdapter, pasándole por Ejecutar el método Fill() del SqlDataAdapter, pasándole por

parámetro nuestro DataSet donde se almacenaran los parámetro nuestro DataSet donde se almacenaran los resultados.resultados.

CERRAR LA CONEXIÓN: connection.Close()CERRAR LA CONEXIÓN: connection.Close()

DemoDemo

Aplicando ADO.NET a Aplicando ADO.NET a nuestro proyectonuestro proyecto

top related