Acceso a datos con Microsoft ADO.NET
Descripción Introducción a ADO.NET Conectar a una base de datos Acceder a datos con DataSets Utilizar múltiples tablas Acceder a datos con DataReaders
Lección: introducción al uso de ADO.NET Multimedia: modelo de objetos ADO.NET Utilizar DataSets frente a DataReaders Práctica: cuándo utilizar DataSets o DataReaders
Uso de DataSets frente a DataReaders Acceso lectura/escritura a datos Sólo lectura Incluye múltiples tablas de distintas bases de datos Basado en una instrucción SQL de una base de datos Desconectado Conectado Vinculado a múltiples controles Vinculado a un único control Búsqueda de datos hacia delante y hacia atrás Sólo hacia delante Acceso más lento Acceso más rápido Soportado por las herramientas de Visual Studio .NET Codificación manual
Práctica: cuándo utilizar DataSets o DataReaders Los estudiantes: Seleccionarán la mejor opción de acceso a datos para determinados escenarios Tiempo: 5 minutos
Lección: conexión a una base de datos Seguridad SQL Server Crear la conexión Demostración: establecer la seguridad SQL Server
Seguridad SQL Server Enviar el nombre de usuario y contraseña en texto claro. Servidor Web Configuración ASP.NET predeterminada Autenticación modo mixto Aquí está el nombre de usuario y la contraseña Servidor SQL Cada cuenta de usuario se agrega a grupo login de SQL Server No enviar el nombre de usuario y contraseña. Enviar sólo que el usuario ha sido autenticado. o… Cliente Autenticación sólo Windows Servidor SQL Sólo la cuenta ASPNET tiene concedido acceso Servidor Web Autenticación Windows
Crear la conexión Uso de SqlConnection Establecer los parámetros de la cadena de conexión Timeout de conexión Fuente de datos Catálogo inicial Seguridad integrada Dim strConn As String = "data source=localhost; " & _ "initial catalog=northwind; integrated security=true" Dim conn As New SqlConnection(strConn) string strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true"; SqlConnection conn = new SqlConnection(strConn); Contraseña Persistir información seguridad Proveedor ID de usuario
Demostración: establecer la seguridad de SQL Server Abrir SQL Server Enterprise Manager Establecer el modo de autenticación Probar con seguridad integrada Probar con seguridad en modo mixto
Lección: acceder a datos con DataSets Crear un DataAdapter Crear un DataSet Demostración: utilizar programáticamente un DataSet Utilizar un DataView Práctica: organizar código para crear un DataSet Vincular un DataSet a un control enlazado a lista Práctica dirigida por el instructor: visualizar un DataSet Gestión de errores
Crear un DataAdapter Almacenar la consulta en un DataAdapter El constructor DataAdapter establece la propiedad SelectCommand Establecer las propiedades InsertCommand, UpdateCommand y DeleteCommand si fuera necesario Dim da As New SqlDataAdapter _ ("select * from Authors", conn) SqlDataAdapter da = new SqlDataAdapter ("select * from Authors",conn); da.SelectCommand.CommandText da.SelectCommand.Connection da.SelectCommand.CommandText; da.SelectCommand.Connection;
Crear un DataSet Crear y poblar un DataSet con DataTables El método Fill ejecuta el SelectCommand Acceder a DataTable DataSet ds = new DataSet(); da.Fill(ds, "Authors"); Dim ds As New DataSet() da.Fill(ds, "Authors") ds.Tables["Authors"].Rows.Count; ds.Tables("Authors").Rows.Count string str=""; foreach(DataRow r in ds.Tables["Authors"].Rows) { str += r[2]; str += r["au_lname"]; } Dim r As DataRow Dim str As String For Each r in _ ds.Tables("Authors").Rows str &= r(2) str &= r("au_lname") Next
Demostración: utilizar programáticamente un DataSet Crear una conexión Crear DataAdapter Crear DataSet Leer los datos del DataSet programáticamente
Utilizar un DataView Un DataView puede personalizarse para presentar un subconjunto de datos de un DataTable La propiedad DefaultView devuelve el DataView predeterminado de la tabla Establecer una vista distinta de un DataSet Dim dv As DataView = ds.Tables("Authors").DefaultView DataView dv = ds.Tables["Authors"].DefaultView; Dim dv As New DataView (ds.Tables("Authors")) dv.RowFilter = "state = 'CA'" DataView dv = new DataView(ds.Tables["Authors"]); dv.RowFilter = "state = 'CA'";
Práctica: organizar código para crear un DataSet Los estudiantes: Reordenarán líneas de código para crear un DataSet Tiempo: 5 minutos
Vincular un DataSet a un control enlazado a lista Crear el control Vincular a un DataSet o un DataView <asp:DataGrid id="dg" runat="server" /> dg.DataSource = ds dg.DataMember = "Authors" dg.DataBind() dg.DataSource = ds; dg.DataMember = "Authors"; dg.DataBind();
Práctica dirigida por el instructor: mostrar un DataSet Crear una conexión Crear un DataAdapter Crear un DataSet Crear un DataView Vincular DataSet y DataView a controles DataGrid
Gestión de errores La conexión no se abre La cadena de conexión no es válida El servidor o la base de datos no se encuentran Fallo de inicio de sesión El DataAdapter no puede crear un DataSet Sintaxis SQL no válida Nombre de tabla o campo no válido Código de ejemplo
Lección: utilizar múltiples tablas Almacenar múltiples tablas Crear relaciones Navegar programáticamente entre tablas utilizando relaciones Navegar visualmente entre tablas utilizando relaciones Práctica dirigida por el instructor: mostrar datos de múltiples tablas
Almacenar múltiples tablas Agregar la primera tabla Agregar la(s) siguiente(s) tabla(s) daCustomers = New SqlDataAdapter _ ("select * from Customers", conn1) daCustomers.Fill(ds, "Customers") daOrders = New SqlDataAdapter _ ("select * from Orders", conn2) daOrders.Fill(ds, "Orders") Customers conn1 conn2 DataSet Orders
Crear relaciones Identificar la columna primaria Identificar la columna secundaria Crear DataRelation Dim parentCol As DataColumn = _ ds.Tables("Customers").Columns("CustomerID") Dim childCol As DataColumn = _ ds.Tables("Orders").Columns("CustomerID") parentCol DataRelation Tabla Customers Dim dr As New DataRelation _ ("name", parentCol, _ childCol) ds.DataRelations.Add(dr) childCol DataSet Tabla Orders Código de ejemplo C#
Navegar programáticamente entre tablas utilizando relaciones ds.Tables(index).Rows(index).GetChildRows("relation") ds.Tables(index).Rows(index).GetParentRow("relation") ds.Tables[index].Rows[index].GetChildRows("relation"); ds.Tables[index].Rows[index].GetParentRow("relation"); Customers Orders GetChildRows GetParentRow DataSet
Navegar visualmente entre tablas utilizando relaciones Dim tableView As DataView Dim currentRowView As DataRowView tableView = New DataView(ds.Tables("Customers")) currentRowView = tableView(dgCustomers.SelectedIndex) dgChild.DataSource = currentRowView.CreateChildView("CustOrders") DataView tableView; DataRowView currentRowView; tableView = new DataView(ds.Tables["Customers"]); currentRowView = tableView[dgCustomers.SelectedIndex]; dgChild.DataSource = currentRowView.CreateChildView("CustOrders"); Customers Orders DataRowView DataView CreateChildView DataSet
Práctica dirigida por el instructor: mostrar datos de múltiples tablas Programáticamente: Crear un DataSet Crear un DataRelation Mostrar registros secundarios utilizando DataRelation Visualmente: Invocar CreateChildView
Lección: Acceso a datos con DataReaders ¿Qué es un DataReader? Crear un DataReader Leer datos de un DataReader Vincular un DataReader a un control enlazado a lista Práctica: organizar código para crear un DataReader Demostración: mostrar datos utilizando DataReaders
¿Qué es un DataReader? Sólo hacia delante, sólo lectura Acceso rápido a datos Conexión a una fuente de datos Gestión de la conexión por sí mismo Gestión de los datos por sí mismo, o vincularlos a un control enlazado a lista Utiliza menos recursos del servidor
Crear un DataReader Para utilizar un DataReader: Crear y abrir la conexión a la base de datos Crear un objeto Command Crear un DataReader desde el objeto Command Invocar el método ExecuteReader Utilizar el objeto DataReader Cerrar el objeto DataReader Cerrar el objeto Connection Utilizar el controlador de errores Try…Catch…Finally 1 2 3 4 5 6 7 Código de ejemplo
Leer datos de un DataReader Invocar Read para cada registro Devuelve false cuando no hay más registros Acceso a campos Parámetro es la posición ordinal o nombre del campo Las funciones Get ofrecen un mejor rendimiento Cerrar el DataReader Cerrar la conexión Do While myReader.Read() str &= myReader(1) str &= myReader("field") str &= myReader.GetDateTime(2) Loop while (myReader.Read()) { str += myReader[1]; str += myReader["field"]; str += myReader.GetDateTime(2); }
Vincular un DataReader a un control enlazado a lista Crear el control Vincular a un DataReader <asp:DataGrid id="dgAuthors" runat="server" /> dgAuthors.DataSource = dr dgAuthors.DataBind() dgAuthors.DataSource = dr; dgAuthors.DataBind();
Práctica: organizar código para crear un DataReader Los estudiantes: Reordenarán líneas de código para crear un DataReader Tiempo: 5 minutos
Demostración: mostrar datos utilizando DataReaders Crear un objeto SqlConnection Crear un objeto DataReader Vincular el DataReader a un Cuadro de lista Generar los elementos del Cuadro de lista a partir de datos proporcionados por el DataReader