Estrella 1 Introducción a Microsoft.NET Programa Microsoft Desarrollador Cinco Estrellas.
Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
-
Upload
idoya-resendez -
Category
Documents
-
view
110 -
download
0
Transcript of Clase 9 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
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