8.- acceso a datos con microsoft ado.net

31
Acceso a datos con Microsoft ADO.NET

Upload: guido-martinez

Post on 25-Sep-2015

226 views

Category:

Documents


0 download

DESCRIPTION

Acceso a datos.

TRANSCRIPT

  • Acceso a datos con Microsoft ADO.NET

  • DescripcinIntroduccin a ADO.NETConectar a una base de datosAcceder a datos con DataSetsUtilizar mltiples tablasAcceder a datos con DataReaders

  • Leccin: introduccin al uso de ADO.NETMultimedia: modelo de objetos ADO.NETUtilizar DataSets frente a DataReadersPrctica: cundo utilizar DataSets o DataReaders

  • Uso de DataSets frente a DataReadersSoportado por las herramientas de Visual Studio .NETAcceso ms lentoSlo hacia delanteVinculado a un nico controlBasado en una instruccin SQL de una base de datosSlo lecturaCodificacin manualAcceso ms rpidoBsqueda de datos hacia delante y hacia atrsVinculado a mltiples controlesIncluye mltiples tablas de distintas bases de datosAcceso lectura/escritura a datosDataReaderDataSetDesconectadoConectado

  • Prctica: cundo utilizar DataSets o DataReadersLos estudiantes:Seleccionarn la mejor opcin de acceso a datos para determinados escenariosTiempo: 5 minutos

  • Leccin: conexin a una base de datosSeguridad SQL ServerCrear la conexinDemostracin: establecer la seguridad SQL Server

  • Seguridad SQL ServerClienteEnviar el nombre de usuario y contrasea en texto claro.No enviar el nombre de usuario y contrasea. Enviar slo que el usuario ha sido autenticado.Autenticacin modo mixtoAutenticacin slo WindowsServidor SQL Slo la cuenta ASPNET tiene concedido accesoServidor Web Autenticacin WindowsoServidor SQL Cada cuenta de usuario se agrega a grupo login de SQL ServerServidor Web Configuracin ASP.NET predeterminadaAqu est el nombre de usuario y la contrasea

  • Crear la conexinUso de SqlConnection

    Establecer los parmetros de la cadena de conexinTimeout de conexinFuente de datosCatlogo inicialSeguridad integradaDim strConn As String = "data source=localhost; " & _ "initial catalog=northwind; integrated security=true"Dim conn As New SqlConnection(strConn)ContraseaPersistir informacin seguridadProveedorID de usuariostring strConn = "data source=localhost; " + "initial catalog=northwind; integrated security=true";SqlConnection conn = new SqlConnection(strConn);

  • Demostracin: establecer la seguridad de SQL ServerAbrir SQL Server Enterprise ManagerEstablecer el modo de autenticacinProbar con seguridad integradaProbar con seguridad en modo mixto

  • Leccin: acceder a datos con DataSetsCrear un DataAdapterCrear un DataSetDemostracin: utilizar programticamente un DataSetUtilizar un DataViewPrctica: organizar cdigo para crear un DataSetVincular un DataSet a un control enlazado a listaPrctica dirigida por el instructor: visualizar un DataSetGestin de errores

  • Crear un DataAdapterAlmacenar la consulta en un DataAdapter

    El constructor DataAdapter establece la propiedad SelectCommand

    Establecer las propiedades InsertCommand, UpdateCommand y DeleteCommand si fuera necesarioDim da As New SqlDataAdapter _("select * from Authors", conn)da.SelectCommand.CommandText da.SelectCommand.ConnectionSqlDataAdapter da = new SqlDataAdapter("select * from Authors",conn);da.SelectCommand.CommandText;da.SelectCommand.Connection;

  • Crear un DataSetCrear y poblar un DataSet con DataTablesEl mtodo Fill ejecuta el SelectCommand

    Acceder a DataTableDim 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")Nextds.Tables("Authors").Rows.CountDataSet ds = new DataSet();da.Fill(ds, "Authors");ds.Tables["Authors"].Rows.Count;string str="";

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

  • Demostracin: utilizar programticamente un DataSetCrear una conexinCrear DataAdapterCrear DataSetLeer los datos del DataSet programticamente

  • Utilizar un DataViewUn DataView puede personalizarse para presentar un subconjunto de datos de un DataTableLa propiedad DefaultView devuelve el DataView predeterminado de la tabla

    Establecer una vista distinta de un DataSetDataView dv = new DataView(ds.Tables["Authors"]);dv.RowFilter = "state = 'CA'";Dim dv As DataView = ds.Tables("Authors").DefaultView Dim dv As New DataView (ds.Tables("Authors"))dv.RowFilter = "state = 'CA'" DataView dv = ds.Tables["Authors"].DefaultView;

  • Prctica: organizar cdigo para crear un DataSetLos estudiantes:Reordenarn lneas de cdigo para crear un DataSetTiempo: 5 minutos

  • Vincular un DataSet a un control enlazado a listaCrear el control

    Vincular a un DataSet o un DataViewdg.DataSource = dsdg.DataMember = "Authors"dg.DataBind()

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

  • Prctica dirigida por el instructor: mostrar un DataSetCrear una conexinCrear un DataAdapterCrear un DataSetCrear un DataViewVincular DataSet y DataView a controles DataGrid

  • Gestin de erroresLa conexin no se abreLa cadena de conexin no es vlidaEl servidor o la base de datos no se encuentranFallo de inicio de sesinEl DataAdapter no puede crear un DataSetSintaxis SQL no vlidaNombre de tabla o campo no vlidoCdigo de ejemplo

  • Leccin: utilizar mltiples tablasAlmacenar mltiples tablasCrear relacionesNavegar programticamente entre tablas utilizando relacionesNavegar visualmente entre tablas utilizando relacionesPrctica dirigida por el instructor: mostrar datos de mltiples tablas

  • Almacenar mltiples tablas Agregar la primera tabla

    Agregar la(s) siguiente(s) tabla(s) daCustomers = New SqlDataAdapter _ ("select * from Customers", conn1)daCustomers.Fill(ds, "Customers")OrdersCustomersdaOrders = New SqlDataAdapter _ ("select * from Orders", conn2)daOrders.Fill(ds, "Orders")conn2conn1DataSet

  • Crear relacionesIdentificar la columna primaria

    Identificar la columna secundaria

    Crear DataRelationDim dr As New DataRelation _ ("name", parentCol, _ childCol)ds.DataRelations.Add(dr)Dim parentCol As DataColumn = _ ds.Tables("Customers").Columns("CustomerID")Dim childCol As DataColumn = _ ds.Tables("Orders").Columns("CustomerID")Tabla OrdersTabla CustomersDataSetparentColchildColDataRelationCdigo de ejemplo C#

  • Navegar programticamente entre tablas utilizando relacionesds.Tables(index).Rows(index).GetChildRows("relation")ds.Tables(index).Rows(index).GetParentRow("relation")CustomersOrdersGetChildRowsGetParentRowDataSetds.Tables[index].Rows[index].GetChildRows("relation");ds.Tables[index].Rows[index].GetParentRow("relation");

  • Navegar visualmente entre tablas utilizando relacionesDim tableView As DataViewDim currentRowView As DataRowView

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

    tableView = new DataView(ds.Tables["Customers"]);currentRowView = tableView[dgCustomers.SelectedIndex];dgChild.DataSource = currentRowView.CreateChildView("CustOrders");

  • Prctica dirigida por el instructor: mostrar datos de mltiples tablasProgramticamente:Crear un DataSetCrear un DataRelationMostrar registros secundarios utilizando DataRelationVisualmente:Invocar CreateChildView

  • Leccin: Acceso a datos con DataReadersQu es un DataReader?Crear un DataReaderLeer datos de un DataReaderVincular un DataReader a un control enlazado a listaPrctica: organizar cdigo para crear un DataReaderDemostracin: mostrar datos utilizando DataReaders

  • Qu es un DataReader?Slo hacia delante, slo lecturaAcceso rpido a datosConexin a una fuente de datosGestin de la conexin por s mismoGestin de los datos por s mismo, o vincularlos a un control enlazado a listaUtiliza menos recursos del servidor

  • Crear un DataReaderPara utilizar un DataReader:Crear y abrir la conexin a la base de datosCrear un objeto CommandCrear un DataReader desde el objeto CommandInvocar el mtodo ExecuteReaderUtilizar el objeto DataReaderCerrar el objeto DataReaderCerrar el objeto ConnectionUtilizar el controlador de errores TryCatchFinallyCdigo de ejemplo1234567

  • Leer datos de un DataReaderInvocar Read para cada registroDevuelve false cuando no hay ms registrosAcceso a camposParmetro es la posicin ordinal o nombre del campoLas funciones Get ofrecen un mejor rendimiento

    Cerrar el DataReaderCerrar la conexinDo While myReader.Read() str &= myReader(1) str &= myReader("field") str &= myReader.GetDateTime(2)Loopwhile (myReader.Read()){ str += myReader[1]; str += myReader["field"]; str += myReader.GetDateTime(2);}

  • Vincular un DataReader a un control enlazado a listaCrear el control

    Vincular a un DataReaderdgAuthors.DataSource = drdgAuthors.DataBind()

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

  • Prctica: organizar cdigo para crear un DataReaderLos estudiantes:Reordenarn lneas de cdigo para crear un DataReaderTiempo: 5 minutos

  • Demostracin: mostrar datos utilizando DataReadersCrear un objeto SqlConnectionCrear un objeto DataReaderVincular el DataReader a un Cuadro de listaGenerar los elementos del Cuadro de lista a partir de datos proporcionados por el DataReader