8. Acceso A Datos Con Microsoft Ado.Net

5,112 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,112
On SlideShare
0
From Embeds
0
Number of Embeds
43
Actions
Shares
0
Downloads
347
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

8. Acceso A Datos Con Microsoft Ado.Net

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

×