acceso a datos con microsoft ado.net. descripción introducción a ado.net conectar a una base de...

31
Acceso a datos con Microsoft ADO.NET

Upload: essua-corona

Post on 11-Jan-2015

25 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 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

Acceso a datos con Microsoft ADO.NET

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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

DataReaderDataSet

Desconectado Conectado

Page 5: 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

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

Page 6: 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

Lección: conexión a una base de datos

Seguridad SQL Server

Crear la conexión

Demostración: establecer la seguridad SQL Server

Page 7: 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

Seguridad SQL Server

ClienteCliente

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ónmodo mixto

Autenticaciónmodo mixto

Autenticaciónsólo WindowsAutenticaciónsólo Windows

Servidor SQL Sólo la cuenta ASPNETtiene concedido acceso

Servidor SQL Sólo la cuenta ASPNETtiene concedido accesoServidor Web

Autenticación WindowsServidor Web

Autenticación Windows

o…o…

Servidor SQL Cada cuenta de usuario se

agrega a grupo login de SQL Server

Servidor SQL Cada cuenta de usuario se

agrega a grupo login de SQL Server

Servidor Web Configuración ASP.NET

predeterminada

Servidor Web Configuración ASP.NET

predeterminada

Aquí está el nombre de usuario

y la contraseña

Page 8: 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

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)

Dim strConn As String = "data source=localhost; " & _ "initial catalog=northwind; integrated security=true"Dim conn As New SqlConnection(strConn)

Contraseña

Persistir información seguridad

Proveedor

ID de usuario

string strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true";SqlConnection conn = new SqlConnection(strConn);

string strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true";SqlConnection conn = new SqlConnection(strConn);

Page 9: 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

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

Page 10: 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

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

Page 11: 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

Almacenar la consulta en un DataAdapter

El constructor DataAdapter establece la propiedad SelectCommand

Establecer las propiedades InsertCommand, UpdateCommand y DeleteCommand si fuera necesario

Crear un DataAdapter

Dim da As New SqlDataAdapter _("select * from Authors", conn)

Dim da As New SqlDataAdapter _("select * from Authors", conn)

da.SelectCommand.CommandText da.SelectCommand.Connection

da.SelectCommand.CommandText da.SelectCommand.Connection

SqlDataAdapter da = 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;

Page 12: 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

Crear un DataSet

Crear y poblar un DataSet con DataTables

El método Fill ejecuta el SelectCommand

Acceder a DataTable

Dim ds As New DataSet()da.Fill(ds, "Authors")

Dim ds As New DataSet()da.Fill(ds, "Authors")

Dim r As DataRowDim str As StringFor Each r in _ ds.Tables("Authors").Rows str &= r(2) str &= r("au_lname")Next

Dim r As DataRowDim str As StringFor Each r in _ ds.Tables("Authors").Rows str &= r(2) str &= r("au_lname")Next

ds.Tables("Authors").Rows.Countds.Tables("Authors").Rows.Count

DataSet ds = new DataSet();da.Fill(ds, "Authors");

DataSet ds = 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"];}

string str="";

foreach(DataRow r in ds.Tables["Authors"].Rows){ str += r[2]; str += r["au_lname"];}

Page 13: 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

Demostración: utilizar programáticamente un DataSet

Crear una conexión

Crear DataAdapter

Crear DataSet

Leer los datos del DataSet programáticamente

Page 14: 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

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

DataView dv = new DataView(ds.Tables["Authors"]);dv.RowFilter = "state = 'CA'";

DataView dv = new DataView(ds.Tables["Authors"]);dv.RowFilter = "state = 'CA'";

Dim dv As DataView = ds.Tables("Authors").DefaultView Dim dv As DataView = ds.Tables("Authors").DefaultView

Dim dv As New DataView (ds.Tables("Authors"))dv.RowFilter = "state = 'CA'"

Dim dv As New DataView (ds.Tables("Authors"))dv.RowFilter = "state = 'CA'"

DataView dv = ds.Tables["Authors"].DefaultView;DataView dv = ds.Tables["Authors"].DefaultView;

Page 15: 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

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

Page 16: 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

Vincular un DataSet a un control enlazado a lista

Crear el control

Vincular a un DataSet o un DataView

dg.DataSource = dsdg.DataMember = "Authors"dg.DataBind()

dg.DataSource = dsdg.DataMember = "Authors"dg.DataBind()

<asp:DataGrid id="dg" runat="server" /><asp:DataGrid id="dg" runat="server" />

dg.DataSource = ds;dg.DataMember = "Authors";dg.DataBind();

dg.DataSource = ds;dg.DataMember = "Authors";dg.DataBind();

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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

Page 20: 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

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")

daCustomers = New SqlDataAdapter _ ("select * from Customers", conn1)daCustomers.Fill(ds, "Customers")

Orders

Customers

daOrders = New SqlDataAdapter _ ("select * from Orders", conn2)daOrders.Fill(ds, "Orders")

daOrders = New SqlDataAdapter _ ("select * from Orders", conn2)daOrders.Fill(ds, "Orders")

conn2conn1

DataSet

Page 21: 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

Crear relaciones

Identificar la columna primaria

Identificar la columna secundaria

Crear DataRelation

Dim dr As New DataRelation _ ("name", parentCol, _ childCol)ds.DataRelations.Add(dr)

Dim dr As New DataRelation _ ("name", parentCol, _ childCol)ds.DataRelations.Add(dr)

Dim parentCol As DataColumn = _ ds.Tables("Customers").Columns("CustomerID")

Dim parentCol As DataColumn = _ ds.Tables("Customers").Columns("CustomerID")

Dim childCol As DataColumn = _ ds.Tables("Orders").Columns("CustomerID")

Dim childCol As DataColumn = _ ds.Tables("Orders").Columns("CustomerID")

Tabla Orders

Tabla Customers

DataSet

parentCol

childCol

DataRelation

Código de ejemplo C#

Page 22: 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

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

GetParentRowDataSet

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");

Page 23: 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

Navegar visualmente entre tablas utilizando relaciones

Dim tableView As DataViewDim currentRowView As DataRowView

tableView = New DataView(ds.Tables("Customers"))currentRowView = tableView(dgCustomers.SelectedIndex)dgChild.DataSource = currentRowView.CreateChildView("CustOrders")

Dim tableView As DataViewDim currentRowView As DataRowView

tableView = New DataView(ds.Tables("Customers"))currentRowView = tableView(dgCustomers.SelectedIndex)dgChild.DataSource = currentRowView.CreateChildView("CustOrders")

Customers Orders

CreateChildView

DataRowView

DataView

DataSet

DataView tableView;DataRowView currentRowView;

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");

Page 24: 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

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

Page 25: 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

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

Page 26: 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

¿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

Page 27: 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

Código de ejemplo

Crear un DataReader

Para utilizar un DataReader:

1. Crear y abrir la conexión a la base de datos

2. Crear un objeto Command

3. Crear un DataReader desde el objeto Command

4. Invocar el método ExecuteReader

5. Utilizar el objeto DataReader

6. Cerrar el objeto DataReader

7. Cerrar el objeto Connection

Utilizar el controlador de errores Try…Catch…Finally

1111

2222

3333

4444

5555

6666

7777

Page 28: 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

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

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);}

while (myReader.Read()){ str += myReader[1]; str += myReader["field"]; str += myReader.GetDateTime(2);}

Page 29: 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

Vincular un DataReader a un control enlazado a lista

Crear el control

Vincular a un DataReader

dgAuthors.DataSource = drdgAuthors.DataBind()

dgAuthors.DataSource = drdgAuthors.DataBind()

<asp:DataGrid id="dgAuthors" runat="server" /><asp:DataGrid id="dgAuthors" runat="server" />

dgAuthors.DataSource = dr;dgAuthors.DataBind();

dgAuthors.DataSource = dr;dgAuthors.DataBind();

Page 30: 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

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

Page 31: 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

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