Acceso a datos con Microsoft ADO.NET

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Acceso a datos con Microsoft ADO.NET"

Transcripción

1 Acceso a datos con Microsoft ADO.NET Índice Descripción 1 Lección: introducción al uso de ADO.NET 2 Lección: conectar a una base de datos 6 Lección: acceso a datos con DataSets 14 Lección: utilizar múltiples tablas 34 Lección: acceder a datos con DataReaders 44

2 Acceso a datos con Microsoft ADO.NET 1 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 Introducción Objetivos de la lección Crear un sitio Web dinámico que responda a las peticiones de los usuarios con datos personalizados puede requerir que vinculemos nuestra aplicación Web a varias fuentes de datos. Microsoft ADO.NET es la herramienta que nos permite acceder programáticamente a fuentes de datos desde un formulario Web Form. En este módulo, aprenderemos a utilizar ADO.NET para agregar acceso a datos a nuestra aplicación Web con Microsoft ASP.NET. En esta lección, aprenderemos a: Describir el modelo de objetos de ADO.NET para acceder a datos. Crear conexiones seguras a una base de datos Microsoft SQL Server utilizando los objetos SqlConnection y SqlDataAdapter. Utilizar objetos DataSet para soportar los requerimientos de almacenamiento y manipulación de datos locales de los formularios Web Forms. Almacenar múltiples tablas de datos en un objeto DataSet, y mostrar los datos en controles DataGrid. Leer datos programáticamente de una base de datos SQL utilizando un objeto SqlDataReader.

3 2 Acceso a datos con Microsoft ADO.NET 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 Introducción Objetivos de la lección ADO.NET está diseñado para cargar datos desde una fuente de datos y trabajar con esos datos en modo desconectado. Este estado de desconexión permite al formulario Web Form operar de forma semi-independiente de las fuentes de datos, reduciendo así el tráfico de red. ADO.NET utiliza Extensible Markup Language (XML) como formato universal de transmisión de datos, lo cual garantiza la interoperabilidad con cualquier plataforma donde esté disponible un parser XML. En esta lección, estudiaremos el uso del modelo de objetos de ADO.NET para acceder a datos. También estudiaremos cómo utilizar los objetos DataSet y DataReader para acceder a datos. En esta lección, aprenderemos a: Describir el acceso a datos de los objetos DataSet y DataReader. Escoger entre los objetos DataSet y DataReader, dependiendo de las necesidades de acceso a datos de una aplicación Web.

4 Acceso a datos con Microsoft ADO.NET 3 Uso de DataSets frente a DataReaders DataSet Acceso lectura/escritura a datos Incluye múltiples tablas de distintas bases de datos Desconectado Vinculado a múltiples controles Búsqueda de datos hacia delante y hacia atrás Acceso más lento Soportado por las herramientas de Visual Studio.NET DataReader Sólo lectura Basado en una instrucción SQL de una base de datos Conectado Vinculado a un único control Sólo hacia delante Acceso más rápido Codificación manual Introducción Los objetos DataSet son objetos complejos que nos permiten almacenar múltiples tablas de datos DataTables desde una fuente de datos. Los objetos DataSet son como una base de datos virtual ubicada dentro de una aplicación Web. Los objetos DataSet también pueden contener relaciones entre los datos de las DataTables, y pueden utilizar esas relaciones para recuperar datos. Los objetos DataReader son objetos ligeros que se utilizan para leer datos desde una fuente de datos; los objetos DataReader proporcionan acceso sólo hacia delante (forward-only) y de sólo lectura (read-only) a los datos de una base de datos. Uso de DataSets y DataReaders La elección entre utilizar objetos DataSet u objetos DataReader debería basarse en el uso previsto para los datos. Normalmente, los objetos DataReader se utilizan para leer datos en situaciones en las que es necesario el acceso una única vez, y de solo lectura, como cuando accedemos a una contraseña almacenada, o se cumplimenta un control enlazado a una lista. Los objetos DataSet se utilizan para un acceso a datos más complejo, como el acceso a todo el historial de pedidos de un cliente. Algunos de los aspectos relativos al acceso a datos que se deben tener en cuenta a la hora de decidir entre objetos DataSet y DataReader incluyen: Acceso a datos Si nuestra intención es leer y escribir a nuestra fuente de datos, debemos utilizar un objeto DataSet. Los objetos DataReader son conexiones de sólo lectura y deberían utilizarse únicamente cuando los datos vayan a utilizarse en una situación de sólo lectura. Acceso a múltiples bases de datos Si nuestra intención es combinar tablas de una o más bases de datos, debemos utilizar un objeto DataSet. Los objetos DataReader se basan en una única instrucción SQL de una sola base de datos. Enlace a controles

5 4 Acceso a datos con Microsoft ADO.NET Si nuestra intención es enlazar los datos a más de un control, debemos utilizar un objeto DataSet. Los objetos DataReader sólo pueden vincularse a un único control. Modo conexión Si nuestra intención es trabajar en un modo desconectado, debemos utilizar un objeto DataSet. Los objetos DataReader deben ejecutarse en modo conectado. Búsqueda (scanning) de datos Si nuestra intención es buscar los datos hacia atrás y hacia delante, debemos utilizar un objeto DataSet. Los objetos DataReader buscan hacia adelante a medida que los datos fluyen desde la base de datos. Velocidad de acceso Si necesitamos acceso de alta velocidad a nuestra fuente de datos, utilizaremos un objeto DataReader. Los objetos DataSet son más lentos que los objetos DataReader en el acceso a una base de datos, debido a que los objetos DataSet almacenan los datos en un objeto del servidor Web. También la sobrecarga es mayor en la creación del objeto DataSet debido a la capacidad de leer y escribir datos y búsqueda hacia delante y hacia atrás. Los objetos DataReader son más rápidos debido a la naturaleza del objeto más ligera. Hay muy poca sobrecarga para el objeto DataReader, ya que éste trabaja sólo hacia delante y sólo de lectura. Soporte de herramientas Si nuestra intención es utilizar Microsoft Visual Studio.NET para crear la conexión a datos, utilizaremos objeto DataSet. Con los objetos DataSet, podemos elegir entre escribir nuestro propio código o utilizar el código máquina de Visual Studio.NET. Con los objetos DataReader, debemos escribir todo el código de soporte.

6 Acceso a datos con Microsoft ADO.NET 5 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 Leer los siguientes escenarios, y decidir si es mejor utilizar un objeto DataSet o un objeto DataReader Deseamos obtener información de dos tablas que se encuentran en dos bases de datos distintas, y mostrar las tablas al usuario. Deseamos obtener información de una tabla en una base de datos, permitir al usuario modificar los datos y almacenar esos cambios en la base de datos. Deseamos obtener información de dos tablas de la misma base de datos y mostrar esa información al usuario. Deseamos obtener información de una tabla de una base de datos y dejar al usuario visualizar los datos en múltiples configuraciones distintas.

7 6 Acceso a datos con Microsoft ADO.NET Lección: conexión a una base de datos Seguridad SQL Server Crear la conexión Demostración: establecer la seguridad SQL Server Introducción Objetivos de la lección El primer paso en el uso de una base de datos para soportar nuestra aplicación Web es crear una conexión segura a la base de datos. Las conexiones no seguras pueden exponer a ataques mal intencionados tanto la aplicación Web como la base de datos. En esta lección, aprenderemos a crear conexiones seguras a una base de datos SQL Server utilizando los objetos SqlConnection y SqlDataAdapter. En esta lección, aprenderemos a: Explicar la diferencia entre el modo mixto y la autenticación sólo Windows. Crear una conexión, con autenticación sólo Windows, a una base de datos SQL Server.

8 Acceso a datos con Microsoft ADO.NET 7 Seguridad SQL Server Cliente Servidor Web Configuración ASP.NET predeterminada Aquí está el nombre de usuario y la contraseña o Servidor Web Autenticación Windows Autenticación modo mixto Autenticación sólo Windows Enviar el nombre de usuario y contraseña en texto claro. 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. Servidor SQL Sólo la la cuenta ASPNET tiene concedido acceso Introducción Autenticación En modo mixto Desde la perspectiva del usuario, el acceso a datos desde una base de datos SQL Server es un proceso en dos pasos. En primer lugar, el usuario envía una petición a la aplicación Web, y ésta se conecta a la base de datos SQL Server para satisfacer la solicitud. Existen dos métodos principales para que una aplicación Web se conecte a una base de datos SQL Server: autenticación en modo mixto y autenticación en modo sólo Windows. El método más utilizado es la autenticación sólo Windows. La autenticación en modo mixto utiliza la configuración predeterminada de ASP.NET y de la aplicación Web. Cada usuario de la aplicación Web debe tener una cuenta de usuario añadida al grupo logins de SQL Server. El punto débil de la autenticación en modo mixto es que los nombres de usuario y las contraseñas se envían al equipo que ejecuta SQL Server en código HTML no encriptado. Estos datos expuestos podrían permitir a terceros obtener las credenciales de inicio de sesión. Además, es necesario administrar cuentas de usuario tanto en el servidor Web como en el equipo que ejecuta SQL Server. Para utilizar la autenticación en modo mixto, configurar SQL Server en modo de autenticación mixto (SQL Server y Windows). El siguiente código puede utilizarse para conectar a un SQL Server con autenticación en modo mixto: Dim strconn As String = _ "data source=localhost; " & _ "initial catalog=northwind; " & _ "user id=cohouser;password=1coho" Dim conn As New SqlConnection(strConn) string strconn = "data source=localhost; " + "initial catalog=northwind; " + "user id=cohouser; " + "password=1coho"; SqlConnection conn = new SqlConnection(strConn);

9 8 Acceso a datos con Microsoft ADO.NET Aviso Utilizar la autenticación en modo mixto para acceder a SQL Server desde una aplicación Web es un riesgo de seguridad y no está recomendado. La autenticación en modo mixto se describe aquí como una técnica que puede utilizarse durante el desarrollo de la aplicación Web. Autenticación sólo Windows La autenticación en modo sólo Windows es el método más utilizado para conectar una aplicación Web a una base de datos SQL Server. Cuando utilizamos la autenticación en modo sólo Windows, SQL Server no necesita el nombre de usuario y la contraseña. Sólo se requiere una confirmación de que el usuario ha sido autenticado por una fuente de confianza para procesar la petición a la base de datos. El proceso de la autenticación en modo sólo Windows utiliza una sola cuenta denominada ASPNET para todos los accesos a SQL Server desde la aplicación Web. Esta única cuenta elimina los problemas de transmitir nombres de usuario y contraseñas no encriptados entre la aplicación Web y SQL Server, junto con la necesidad de mantener cuentas de usuario en ambos servidores. Con la autenticación en modo sólo Windows, los usuarios acceden al formulario Web Form como usuarios anónimos. ASP.NET se conecta a SQL Server y se autentica utilizando la cuenta de usuario ASPNET. Los datos solicitados son devueltos por SQL Server y utilizados por la aplicación Web. Finalmente, el formulario Web Form que incluye los datos solicitados se devuelven al usuario. Para utilizar la autenticación en modo sólo Windows, configuramos SQL Server con la autenticación en modo sólo Windows. El siguiente código puede utilizarse para conectar a un SQL Server con autenticación en modo sólo Windows: 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);

10 Acceso a datos con Microsoft ADO.NET 9 Configurar el SQL Server para ejecutar autenticación en modo mixto o sólo Windows Cuando utilizamos la autenticación en modo sólo Windows, podemos mantener a SQL Server en el modo de autenticación predeterminado de sólo Windows. Si utilizamos la autenticación en modo mixto, necesitamos modificar el modo de autenticación de SQL Server. Cambiar el modo de autenticación de SQL Server 1. En el menú Inicio, hacer clic con el botón derecho en Mi PC y clic en Administrar. 2. En la consola Administración de equipos, expandir la carpeta Servicios y Aplicaciones y la carpeta Servidores Microsoft SQL Server. 3. Hacer clic con el botón derecho en el servidor SQL Server (local) y clic en Propiedades. 4. En el cuadro de diálogo Propiedades de SQL Server, en la ficha Seguridad, hacer clic en el botón de opción SQL Server y Windows o la opción sólo Windows de la sección Autenticación, y hacer clic en Aceptar. Nota Para más información sobre securizar una aplicación Web, ver el Módulo Securizar una aplicación Web con Microsoft ASP.NET.

11 10 Acceso a datos con Microsoft ADO.NET Crear la conexión Uso de SqlConnection Dim Dim strconn strconn As As String String = "data "data source=localhost; source=localhost; " & _ "initial "initial catalog=northwind; catalog=northwind; integrated integrated security=true" security=true" Dim Dim conn conn As As New New SqlConnection(strConn) SqlConnection(strConn) string string strconn strconn = "data "data source=localhost; source=localhost; " + "initial "initial catalog=northwind; catalog=northwind; integrated integrated security=true"; security=true"; SqlConnection SqlConnection conn conn = new new SqlConnection(strConn); SqlConnection(strConn); Establecer los parámetros de la cadena de conexión Timeout de conexión Contraseña Fuente de datos Persistir información seguridad Catálogo inicial Proveedor Seguridad integrada ID de usuario Introducción Crear una cadena de conexión Para mover datos entre una base de datos y nuestra aplicación Web, en primer lugar debemos crear una conexión a la base de datos. Para ello, debemos identificar el nombre del servidor de base de datos, el nombre de la base de datos, y la información de inicio de sesión requerida. Dependiendo del tipo de base de datos al que accedamos, podemos utilizar un objeto SqlConnection o un objeto OleDbConnection. Utilizamos un objeto SqlConnection para conectar a bases de datos SQL Server 7.0 o posterior, y objetos OleDbConnection para conectar al resto de bases de datos. Creamos un objeto SqlConnection pasando una cadena de conexión que proporciona los parámetros necesarios para crear una conexión a una fuente de datos. El siguiente código de ejemplo crea un objeto SQLConnection a la base de datos SQL Server Northwind: 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);

12 Acceso a datos con Microsoft ADO.NET 11 Parámetros de la cadena de conexión La siguiente tabla describe algunos de los parámetros más habituales de un objeto de conexión: Parámetro Connection Timeout Data Source Initial Catalog Integrated Security Password Persist Security Info Provider User ID Descripción El intervalo de tiempo de espera en segundos en una conexión al servidor antes de finalizar el intento y generar una excepción. 15 segundos es el tiempo predeterminado. El nombre del servidor SQL Server utilizado cuando se abre una conexión, o el nombre del archivo que se utiliza cuando en la conexión a una base de datos Microsoft Access. El nombre de la base de datos. El parámetro que determina si la conexión es o no segura. Los valores posibles son True, False y SSPI. SSPI es el equivalente a True. La contraseña de inicio de sesión en la base de datos SQL Server. Cuando está establecido a False no se devuelve información sensible a la seguridad (como la contraseña) como parte de la conexión, si la conexión está abierta o ha estado en un estado abierto. Establecer esta propiedad a True puede constituir un riesgo de seguridad. La configuración predeterminada es False. La propiedad que se utiliza para establecer o devolver el nombre del proveedor de la conexión; este parámetro se utiliza únicamente para objetos OleDbConnection. El nombre de cuenta de inicio de sesión de SQL Server.

13 12 Acceso a datos con Microsoft ADO.NET 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 Introducción Abrir SQL Server Enterprise Manager Establecer el modo de autenticación Prueba con seguridad integrada En esta demostración, veremos cómo establecer y probar una conexión de seguridad integrada entre una aplicación Web y un SQL Server. Ejecutar esta demostración 1. En el menú Inicio, hacer clic con el botón derecho en Mi PC y clic en Administrar. 2. En la consola Administración de equipos, expandir la carpeta Servicios y aplicaciones y expandir la carpeta Servidores Microsoft SQL Server. 3. Hacer clic con el botón derecho en el servidor SQL Server (local) y clic en Propiedades. 4. En el cuadro de diálogo Propiedades de SQL Server, en la ficha Seguridad, hacer clic en el botón de opción Sólo Windows de la sección Autenticación y hacer clic en Aceptar. 5. Abrir el formulario Web Form SQLSecurityModes.aspx del proyecto Demo08VB o Demo08CS ue se pueden encontrar dentro del fichero demos08.zip 6. Generar y examinar la página SQLSecurityModes.aspx. 7. Hacer clic en Utilizar seguridad integrada, y clic en Get Data. Los datos se recuperan de la base de datos y se muestran en el control DataGrid. 8. Hacer clic en Utilizar seguridad estándar, y clic en Get Data. Obtenemos un error porque el usuario no existe en el SQL Server. 9. Crear un nuevo usuario para SQL Server: a. En la consola Gestión de equipos, expandir la carpeta SQL Server (local) y expandir la carpeta Seguridad. b. Hacer clic con el botón derecho en Logins y hacer clic en Nuevo Login.

14 Acceso a datos con Microsoft ADO.NET 13 Prueba con seguridad en modo mixto c. En el cuadro de diálogo Propiedades de login de SQL Server, escribir CohoUser en el campo Nombre, hacer clic en Autenticación SQL Server en la sección Autenticación, escribir 1Coho en el campo Contraseña, y hacer clic en Aceptar. d. Teclear 1Coho en el cuadro de diálogo Confirmar contraseña, y hacer clic en Aceptar. 10. Cambiar el modo de autenticación de SQL Server a modo mixto. a. En la consola Gestión de equipos, hacer clic con el botón derecho en SQL Server (local) y clic en Propiedades. b. En el cuadro de diálogo Propiedades de SQL Server, en la ficha Seguridad, hacer clic en el botón de opción SQL Server y Windows de la sección Autenticación, y hacer clic en Aceptar. c. A la pregunta de si es necesario reiniciar el servicio SQL Server, hacer clic en Sí. 11. Visualizar la página SQLSecurityModes.aspx en el navegador de nuevo y probar ambos métodos para acceder a SQL Server. Ahora, funcionarán los dos métodos.

15 14 Acceso a datos con Microsoft ADO.NET Lección: acceso 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 Introducción Objetivos de la lección El objeto DataSet representa una copia local de los datos que provienen de una o más fuentes de datos. El uso de un objeto DataSet permite que un formulario Web Form se ejecute de forma semi-independiente de las fuentes de datos. El objeto DataSet puede utilizar un objeto DataAdapter para cargar los datos de una fuente de datos y puede desconectarse de la misma. El usuario puede entonces utilizar y manipular los datos. Cuando los datos necesitan ser actualizados contra la fuente de datos, se utiliza un objeto DataAdapter para volver a conectarse y actualizar la fuente de datos. En esta lección, estudiaremos cómo utilizar los objetos DataSet para soportar el almacenamiento local de datos y los requerimientos de manipulación de los formularios Web Forms. En esta lección, aprenderemos a: Crear un objeto DataAdapter para enlazar un objeto DataSet a una fuente de datos. Crear un objeto DataSet para guardar datos de una fuente de datos. Utilizar objetos DataView para guardar un subconjunto de datos de un objeto DataSet. Vincular un objeto DataSet y un objeto DataView a un control enlazado a lista. Gestionar los errores típicos que nos encontramos en el acceso a datos.

16 Acceso a datos con Microsoft ADO.NET 15 Crear un DataAdapter Almacenar la consulta en un DataAdapter Dim Dim da da As As New New SqlDataAdapter SqlDataAdapter _ ("select ("select * from from Authors", Authors", conn) conn) SqlDataAdapter SqlDataAdapter da da = new new SqlDataAdapter SqlDataAdapter ("select ("select * from from Authors",conn); Authors",conn); El constructor DataAdapter establece la propiedad SelectCommand da.selectcommand.commandtext da.selectcommand.commandtext da.selectcommand.connection da.selectcommand.connection da.selectcommand.commandtext; da.selectcommand.commandtext; da.selectcommand.connection; da.selectcommand.connection; Establecer las propiedades InsertCommand, UpdateCommand y DeleteCommand si fuera necesario Introducción DataAdapter El objeto DataSet representa una copia local de datos de una fuente de datos. Cuando se utiliza sin una fuente de datos, el objeto DataSet resulta útil para guardar datos locales a los cuales pueden acceder los formularios Web Forms. Sin embargo, para actuar como una herramienta de gestión de datos real, un objeto DataSet debe poder interactuar con una o más fuentes de datos. Para conseguir esta interacción, el.net Framework proporciona las clases SqlDataAdapter y OleDbDataAdapter. Un objeto DataAdapter actúa como enlace entre un objeto DataSet y una fuente de datos que puede utilizarse para recuperar y guardar datos. La clase DataAdapter representa un conjunto de comandos de base de datos y una conexión a una base de datos que utilizamos para rellenar un objeto DataSet y actualizar la fuente de datos. Cada objeto DataAdapter intercambia datos entre un único objeto DataTable en un objeto DataSet y un único conjunto de resultados de una instrucción SQL o un procedimiento almacenado. Visual Studio.NET pone a disposición dos clases principales DataAdapter para su uso con bases de datos: Clase OleDbDataAdapter Esta clase es adecuada para utilizarse con cualquier fuente de datos expuesta por un OLE DB Data Provider. Clase SqlDataAdapter Esta clase es específica para una base de datos SQL Server versión 7.0 o posterior. El objeto SqlDataAdapter es más rápido que el objeto OleDbDataAdapter porque funciona directamente con SQL Server y no debe funcionar a través de una capa OLE DB Data Provider. Además, las clases DataAdapter para otros tipos de fuentes de datos pueden integrarse con Visual Studio.NET.

17 16 Acceso a datos con Microsoft ADO.NET Propiedades del DataAdapter Cuando utilizamos objetos DataAdapter para intercambiar datos entre un objeto DataSet y una fuente de datos, podemos especificar las acciones que deseamos realizar utilizando una de las cuatro propiedades DataAdapter. Las propiedades DataAdapter ejecutan una instrucción SQL o invocan un procedimiento almacenado. Las propiedades que están disponibles con la clase DataAdapter se muestran en la siguiente tabla. Propiedad SelectCommand InsertCommand UpdateCommand DeleteCommand Función La propiedad SelectCommand recupera filas de la fuente de datos. La propiedad InsertCommand escribe filas insertadas del DataSet a la fuente de datos. La propiedad UpdateCommand escribe filas modificadas del DataSet a la fuente de datos. La propiedad DeleteCommand elimina filas en la fuente de datos. Ejemplo de SqlDataAdapter El siguiente código de ejemplo muestra cómo crear un objeto SqlDataAdapter denominado da que contiene una sentencia de consulta: 'Create a connection Dim conn As New SqlConnection _ ("data source=localhost;initial catalog=pubs;" & _ "integrated security=true;persist security info=true;") 'Create the DataAdapter Dim da As New SqlDataAdapter _ ("select * from Authors", conn) //Create a connection SqlConnection conn = new SqlConnection ("data source=localhost; initial catalog=pubs; " + "integrated security=true; persist security info=true;"); //Create the DataAdapter SqlDataAdapter da = new SqlDataAdapter ("select * from Authors", conn);

18 Acceso a datos con Microsoft ADO.NET 17 Crear un DataSet Crear y poblar un DataSet con DataTables El método Fill ejecuta el SelectCommand DataSet DataSet ds ds = new new DataSet(); DataSet(); da.fill(ds, da.fill(ds, "Authors"); "Authors"); Acceder a DataTable ds.tables["authors"].rows.count; ds.tables["authors"].rows.count; string string str=""; str=""; foreach(datarow foreach(datarow r in in ds.tables["authors"].rows) ds.tables["authors"].rows) { str str += += r[2]; r[2]; str str += += r["au_lname"]; r["au_lname"]; } Dim Dim ds ds As As New New DataSet() DataSet() da.fill(ds, da.fill(ds, "Authors") "Authors") ds.tables("authors").rows.count ds.tables("authors").rows.count Dim Dim r As As DataRow DataRow Dim Dim str str As As String String For For Each Each r in in _ ds.tables("authors").rows ds.tables("authors").rows str str &= &= r(2) r(2) str str &= &= r("au_lname") r("au_lname") Next Next Introducción Crear a DataSet Rellenar el DataSet Para crear una copia local de una base de datos, creamos y poblamos un objeto DataSet utilizando objetos DataTable. El primer paso para crear un objeto DataSet es declarar el nombre del objeto DataSet. El siguiente código crea un objeto DataSet denominado ds: Dim ds As New DataSet() DataSet ds = new DataSet(); Tras crear un objeto DataSet, rellenamos los objetos DataTable creando un objeto DataAdapter. Invocamos el método Fill en el objeto DataAdapter y especificamos el objeto DataTable que deseamos rellenar. El siguiente código rellena la tabla Authors del objeto DataSet ds utilizando un DataAdapter denominado da: da.fill(ds, "Authors") da.fill(ds, "Authors"); El método Fill ejecuta implícitamente una consulta SQL en la propiedad SelectCommand del objeto DataAdapter. Los resultados de la consulta SQL se utilizan para definir la estructura del objeto DataTable, y para poblar la tabla con datos.

19 18 Acceso a datos con Microsoft ADO.NET El siguiente código de ejemplo muestra cómo crear un objeto SqlDataAdapter da, e invocar a continuación el método Fill para almacenar los datos en el objeto DataSet ds. 'Create a connection Dim conn As New SqlConnection _ ("data source=localhost;initial catalog=pubs;" & _ "integrated security=sspi;persist security info=true;") 'Create the DataSet Dim ds As New DataSet() 'Create the DataAdapter Dim da As New SqlDataAdapter _ ("select * from Authors", conn) 'Fill the DataSet ds da.fill(ds, "Authors") //Create a connection SqlConnection conn = new SqlConnection ("data source=localhost;initial catalog=pubs; " + "integrated security=sspi;persist security info=true;"); //Create the DataSet DataSet ds = new DataSet(); //Create the DataAdapter SqlDataAdapter da = new SqlDataAdapter ("select * from Authors", conn); //Fill the DataSet ds da.fill(ds, "Authors"); El segundo argumento del método Fill es un nombre para el objeto DataTable que está creado. Utilizamos este nombre para acceder a los datos devueltos. Acceder a DataTable Una vez insertados los datos en un objeto DataSet, podemos acceder programáticamente a los datos. Como muestra el siguiente código, cada objeto DataSet está formado por uno o más objetos DataTable a los que podemos hacer referencia por su nombre o posición ordinal: ds.tables("authors") -ods.tables(0) ds.tables["authors"]; -ods.tables[0];

20 Acceso a datos con Microsoft ADO.NET 19 Las clases DataRow y DataColumn son los componentes principales de una clase DataTable. Utilizaríamos un objeto DataRow con sus propiedades y métodos para recuperar y evaluar los valores de un objeto DataTable. DataRowCollection representa los objetos DataRow reales que se encuentran en el objeto DataTable, y DataColumnCollection contiene los objetos DataColumn que describen el esquema del objeto DataTable. La propiedad Rows del objeto DataTable proporciona acceso programático a DataRowCollection. La propiedad Columns del objeto DataTable proporciona acceso programático a DataColumnCollection. El siguiente código de ejemplo agrega los nombres de columnas de un objeto DataSet al control ListBox denominado lstitems: Dim col As DataColumn For Each col In ds.tables(0).columns lstitems.items.add(col.columnname) Next foreach(datacolumn col in ds.tables[0].columns) { lstitems.items.add(col.columnname); } Tanto el objeto DataRowCollection como el objeto DataColumnCollection tienen una propiedad Count que nos permite determinar el número de filas o columnas de un objeto DataTable, como muestra el siguiente código de ejemplo: ds.tables("authors").rows.count ds.tables("authors").columns.count ds.tables["authors"].rows.count; ds.tables["authors"].columns.count; Contar las filas y columnas del objeto DataTable nos permite acceder a campos individuales del objeto DataTable. Podemos acceder a campos por posición ordinal (basada-en-0) o por el nombre. En el siguiente código, x es el índice de la fila de datos a la que deseamos acceder: DataSet.Tables(0).Rows(x)(1) DataSet.Tables(0).Rows(x)("fieldname") ds.tables["authors"].rows[x][1]; ds.tables["authors"].rows[x]["fieldname"];

21 20 Acceso a datos con Microsoft ADO.NET El siguiente código recorre en bucle cada fila del objeto DataTable denominado Authors y crea una cadena utilizando los campos segundo y au_lname de Authors: Dim r As DataRow Dim str As String For Each r in ds.tables("authors").rows str &= r(1) str &= r("au_lname") Next string str = ""; foreach(datarow r in ds.tables["authors"].rows) { str += r[1]; str += r["au_lname"]; }

22 Acceso a datos con Microsoft ADO.NET 21 Demostración: utilizar programáticamente un DataSet Crear una conexión Crear DataAdapter Crear DataSet Leer los datos del DataSet programáticamente Introducción En esta demostración, examinaremos código que crea y rellena un objeto DataSet, y veremos cómo ese código rellena dinámicamente un control ListBox desde el objeto DataSet. Ejecutar la demostración 1. Abrir la página UseDataSet.aspx del proyecto Demo08VB o Demo08CS que se pueden encontrar dentro del fichero demos08.zip. 2. Generar y examinar la página. La primera vez que se carga la página, el cuadro de lista lstitems se rellena dinámicamente con los nombres de las columnas del DataSet. El botón Get Number of Rows y el botón Get Values leen la información del DataSet. 3. Hacer clic en Get Number of Rows. El código en el procedimiento de evento click muestra la propiedad Count de la colección Rows. 4. Seleccionar una columna en el cuadro de lista y hacer clic en Get Values. El código en el procedimiento de evento click recorre en bucle las filas del DataSet y muestra el campo seleccionado. 5. En Visual Studio.NET, visualizar la página de código subyacente de la página UseDataSet.aspx.

23 22 Acceso a datos con Microsoft ADO.NET 6. En el procedimiento de evento Page_Load, mostrar el código que crea los siguientes objetos: SqlConnection SqlDataAdapter DataSet 7. En el procedimiento de evento Page_Load, mostrar cómo la primera vez que se muestra la página, el cuadro lista se rellena únicamente con los nombres de columnas. 8. En el procedimiento de evento cmdrows_click, mostrar cómo se recupera el número de filas desde el DataSet. 9. En el procedimiento de evento cmdgetvalues_click, mostrar cómo se recupera el campo seleccionado desde el DataSet.

24 Acceso a datos con Microsoft ADO.NET 23 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 Dim Dim dv dv As As DataView DataView = ds.tables("authors").defaultview ds.tables("authors").defaultview DataView DataView dv dv = ds.tables["authors"].defaultview; ds.tables["authors"].defaultview; Establecer una vista distinta de un DataSet Dim Dim dv dv As As New New DataView DataView (ds.tables("authors")) (ds.tables("authors")) dv.rowfilter dv.rowfilter = "state "state = 'CA'" 'CA'" DataView DataView dv dv = new new DataView(ds.Tables["Authors"]); DataView(ds.Tables["Authors"]); dv.rowfilter dv.rowfilter = "state "state = 'CA'"; 'CA'"; Introducción DataViews como subconjunto de un DataTable DefaultView Para mostrar los datos que almacena un objeto DataSet, podemos vincular el objeto DataSet directamente a un control enlazado a una lista o utilizar un objeto DataView. Un objeto DataView es una vista personalizada y enlazable de un único objeto DataTable. Después de crear un objeto DataView, el usuario puede utilizarlo para clasificar, filtrar, buscar, editar y navegar por datos. Los objetos DataView pueden personalizarse para presentar un subconjunto de datos de un objeto DataTable. Esta personalización permite tener dos controles vinculados al mismo objeto DataTable, pero con cada control mostrando distintas versiones de los datos. Por ejemplo, un control puede estar vinculado a un objeto DataView mostrando todas las filas de la tabla, y un segundo control puede estar vinculado a otro objeto DataView configurado para mostrar únicamente las filas que se han eliminado del objeto DataTable. Cada objeto DataTable de un objeto DataSet tiene una propiedad DefaultView, que devuelve la vista predeterminada de la tabla. El siguiente código muestra cómo podemos acceder al objeto DataView dv predeterminado, de un objeto DataTable denominado Authors: Dim dv As DataView = ds.tables("authors").defaultview DataView dv = ds.tables["authors"].defaultview;

25 24 Acceso a datos con Microsoft ADO.NET DataView personalizado También podemos crear un objeto DataView personalizado basado en un subconjunto de datos que se encuentran en un objeto DataTable. Por ejemplo, podemos establecer la propiedad DataView RowFilter utilizando una expresión de filtro. La expresión de filtro puede tener el valor True o False. También podemos establecer la propiedad Sort del objeto DataView utilizando una expresión de clasificación. La expresión de clasificación puede incluir los nombres de objetos DataColumn o un cálculo. En el siguiente código, la propiedad RowFilter, de un objeto DataView dv, está asignada para recuperar autores únicamente del estado de California y, a continuación, ordenar los resultados por apellido: Dim dv As New DataView(ds.Tables("Authors")) dv.rowfilter = "state = 'CA'" dv.sort = "au_lname" DataView dv = new DataView(ds.Tables["Authors"]); dv.rowfilter = "state = CA "; dv.sort = "au_lname";

26 Acceso a datos con Microsoft ADO.NET 25 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 En esta práctica, reordenaremos líneas de código ADO.NET en el orden correcto para crear un objeto DataSet. Ejecutar la práctica Visualizar la página o y organizar las líneas de código ADO.NET en el orden correcto para crear un objeto DataSet. Nota Hay varias respuestas correctas para esta práctica.

27 26 Acceso a datos con Microsoft ADO.NET Vincular un DataSet a un control enlazado a lista Crear el control <asp:datagrid <asp:datagrid id="dg" id="dg" runat="server" runat="server" /> /> Vincular a un DataSet o un DataView dg.datasource dg.datasource = ds ds dg.datamember dg.datamember = "Authors" "Authors" dg.databind() dg.databind() dg.datasource dg.datasource = ds; ds; dg.datamember dg.datamember = "Authors"; "Authors"; dg.databind(); Introducción Crear el control ASP.NET incluye un conjunto de controles enlazados a listas, como los controles DataGrid, DataList y DataRepeater, que facilitan y flexibilizan la visualización de datos desde una fuente de datos. Los desarrolladores únicamente deben vincular estos controles a una fuente de datos para mostrar los datos seleccionados. El primer paso para vincular el objeto DataSet al control enlazado a lista es crear el control. El siguiente código muestra cómo crear un control DataGrid dg que produce la salida HTML parecida a una hoja de cálculo: <asp:datagrid id="dg" runat="server" /> Vincular a un Dataset o DataView Para vincular un objeto DataSet a un control DataGrid, en primer lugar debemos establecer la propiedad DataSource del control DataGrid a un objeto DataSet, DataTable o DataView, e invocar el método DataBind. Si establecemos la propiedad DataSource del control DataGrid directamente a un objeto DataSet, el objeto DataTable con el índice 0 se utiliza de forma predeterminada. Para especificar otro objeto DataTable, establecer la propiedad DataMember del control DataGrid con el nombre del objeto DataTable deseado. El siguiente código de ejemplo muestra cómo vincular la tabla Authors, del objeto DataSet ds, a un control DataGrid denominado dg: dg.datasource = ds dg.datamember = "Authors" dg.databind() dg.datasource = ds; dg.datamember = "Authors"; dg.databind();

28 Acceso a datos con Microsoft ADO.NET 27 El siguiente código muestra cómo podemos utilizar también la colección Tables del objeto DataSet ds para asignar el objeto DataTable Authors directamente a la propiedad DataSource del control DataGrid denominado dg: dg.datasource = ds.tables("authors") dg.databind() dg.datasource = ds.tables["authors"]; dg.databind(); Si deseamos mostrar una vista distinta de los datos del control DataGrid, deberemos crear un nuevo objeto DataView desde el objeto DataSet y vincular ese objeto al control. Ejemplo de uso de una vista personalizada El siguiente código de ejemplo muestra cómo vincular un objeto DataView dv, filtrado para el estado de California, a un control DataGrid dg: Dim dv As New DataView(ds.Tables("Authors")) dv.rowfilter = "state = 'CA'" dg.datasource = dv dg.databind() DataView dv = new DataView(ds.Tables["Authors"]); dv.rowfilter = "state = 'CA'"; dg.datasource = dv; dg.databind(); La siguiente ilustración muestra el formato predeterminado del control DataGrid, mostrando datos de autores que viven en el estado de California.

29 28 Acceso a datos con Microsoft ADO.NET 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 Introducción En esta práctica dirigida por el instructor, examinaremos código que crea y rellena un objeto DataSet, crea un objeto DataView utilizando datos clasificados y filtrados del objeto DataSet, y vincula los controles DataGrid a los objetos DataSet y DataView. Ejecutar la práctica dirigida por el instructor 1. Abrir la página UseGrid.aspx del proyecto Mod10VB o Mod10CS de la solución 2310Demos. 2. Generar y examinar la página UseGrid.aspx. Hay dos controles DataGrid vinculados al mismo objeto DataSet. El primer control DataGrid muestra todos los datos del objeto DataSet. El segundo control DataGrid está vinculado a un objeto DataView, que filtra y clasifica los datos. El segundo control DataGrid también implementa la clasificación estableciendo la propiedad Sort del objeto DataView. 3. En Visual Studio.NET, visualizar el código subyacente de la página UseGrid.aspx. 4. En el procedimiento de evento Page_Load, mostrar el código que hace lo siguiente: Crea el objeto SqlConnection. Crea el objeto SqlDataAdapter. Crea un objeto DataSet. Vincula el primer control DataGrid con el objeto DataSet. Crea un objeto DataView y establece las propiedades RowFilter y Sort. Vincula el segundo control DataGrid con el objeto DataView.

30 Acceso a datos con Microsoft ADO.NET 29 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 Introducción La conexión no se abre Existen dos fuentes principales de error cuando intentamos acceder a datos desde un formulario Web Form utilizando ADO.NET: problemas de conexión y una falta de alineación con la base de datos. Cuando se invoca el método Open, puede producirse más de un error. Ante la posibilidad de que ocurra más de un error, debemos ser capaces de gestionar múltiples errores utilizando las instrucciones Try Catch Finally. Si se produce una o más excepciones SqlException, podemos recorrer todos los objetos de excepciones SQL devueltos a nuestra aplicación Web. El siguiente código muestra cómo utilizar una instrucción Try...Catch para capturar múltiples tipos de excepciones. En este ejemplo, el código captura el tipo de excepción InvalidOperationException, junto con otras excepciones, utilizando un procesador de excepciones genérico:

31 30 Acceso a datos con Microsoft ADO.NET Try Dim conn As New SqlConnection(...) Dim da As New SqlDataAdapter(..., conn) Dim ds As New DataSet() da.fill(ds) Catch ex1 As System.Data.SqlClient.SqlException Select Case ex1.number Case 17 lblerrors.text = lblerrors.text & _ ("invalid Server name") Case 156, 170 'bad SQL syntax lblerrors.text = lblerrors.text & _ ("incorrect syntax") Case 207 'bad field name in select lblerrors.text = lblerrors.text & _ ("invalid column name") Case 208 'bad table name in select lblerrors.text = lblerrors.text & _ ("invalid object name") Case lblerrors.text = lblerrors.text & _ ("invalid user name") Case lblerrors.text = lblerrors.text & _ ("invalid password") Case 4060 lblerrors.text = lblerrors.text & _ ("invalid database") End Select Catch ex2 As System.Exception lblerrors.text = lblerrors.text & _ ("Unexpected exception: " & ex2.message & ". ") End Try

32 Acceso a datos con Microsoft ADO.NET 31 try { SqlConnection conn = new SqlConnection("..."); SqlDataAdapter da = new SqlDataAdapter("...",conn); DataSet ds = new DataSet(); da.fill(ds); } catch (System.Data.SqlClient.SqlException ex1) { switch(ex1.number) { case 17: lblerrors.text = lblerrors.text + ("invalid Server name"); break; case 156: case 170: //bad SQL syntax lblerrors.text = lblerrors.text + ("incorrect syntax"); break; case 207: //bad field name in select lblerrors.text = lblerrors.text + ("invalid column name"); break; case 208: //bad table name in select lblerrors.text = lblerrors.text + ("invalid object name"); break; case 18452: lblerrors.text = lblerrors.text + ("invalid user name"); break; case 18456: lblerrors.text = lblerrors.text + ("invalid password"); break; case 4060: lblerrors.text = lblerrors.text + ("invalid database"); break; } } catch (System.Exception ex2) { lblerrors.text = lblerrors.text + ("Unexpected exception: " + ex2.message + ". "); }

33 32 Acceso a datos con Microsoft ADO.NET El DataAdapter no puede crear un DataSet Errores de SQL Server La clase SqlException contiene la excepción que se lanza cuando SQL Server devuelve un aviso o error. Esta clase se crea siempre que el Proveedor de Datos.NET de SQL Server encuentra una situación que no puede gestionar. La clase SqlException siempre contiene al menos la instancia de un objeto SqlError. Podemos utilizar el nivel de severidad de la clase para que nos ayude a determinar el contenido de un mensaje mostrado por una excepción. Para capturar objetos SqlException, debemos buscar errores de tipo System.Data.SqlClient.SqlException. Cuando se produce un objeto SqlException, el objeto de excepción contiene una colección Errors. El siguiente ejemplo muestra cómo podemos recorrer la colección Errors para encontrar información sobre los errores que se han producido: Dim erdata As SqlClient.SqlErrorCollection = ex1.errors Dim i As Integer For i = 0 To erdata.count - 1 lblerrors.text &= ("Error " & i & ": " & _ erdata(i).number & ", " & _ erdata(i).class & ", " & _ erdata(i).message & "<br>") Next i SqlErrorCollection erdata = ex1.errors; for(int i = 0; i < erdata.count; i++) { lblerrors.text += "Error" + i + ": " + erdata[i].number + ", " + erdata[i].class + ", " + erdata[i].message + "<br>"; } Los errores de SQL Server comparten propiedades comunes y están identificados por un número y un nivel de gravedad: La clase SqlError y propiedades comunes Cada objeto SqlError tiene las propiedades comunes que se muestran en la siguiente tabla. Propiedad Descripción Class LineNumber Message Number Obtiene el nivel de gravedad del error devuelto por SQL Server. Obtiene el número de línea del archivo de proceso por lotes con comandos Transact-SQL o el procedimiento almacenado que contiene el error. Obtiene el texto que describe el error. Obtiene un número que identifica el tipo de error. Nota Para una lista completa de las propiedades de la clase SqlError, consultar la documentación de Visual Studio.NET.

34 Acceso a datos con Microsoft ADO.NET 33 Números de error de SQL Server La propiedad Number permite determinar el error específico que se ha producido. Por ejemplo, la siguiente tabla ofrece una lista de algunos números de errores SQL Server más habituales y sus descripciones. Número Descripción 17 Nombre de servidor no válido 4060 Nombre de base de datos no válido Nombre de usuario o contraseña no válidos Niveles de gravedad de SQL Server La siguiente tabla describe niveles de severidad de errores de SQL Server, a los que se accede a través de la propiedad Class de la clase SqlError. Gravedad Descripción Acción Generado por usuario Puede ser corregido por el usuario Errores de software o hardware Errores de software o hardware Podemos seguir trabajando, pero es posible que no podamos ejecutar una instrucción determinada. SqlConnection permanece abierto. El servidor cierra SqlConnection. El usuario puede volver a abrir la conexión.

35 34 Acceso a datos con Microsoft ADO.NET 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 Introducción Objetivos de la lección Uno de los puntos fuertes de los objetos DataSet es que pueden contener múltiples objetos DataTable, y cada objeto DataTable puede provenir de una fuente distinta. En esta lección, estudiaremos cómo almacenar múltiples tablas de datos en un objeto DataSet y cómo mostrar esos datos en controles DataGrid. En esta lección, aprenderemos a: Almacenar datos en múltiples tablas de múltiples fuentes. Crear relaciones entre datos de múltiples fuentes de datos. Utilizar relaciones para navegar entre tablas de datos de múltiples fuentes.

36 Acceso a datos con Microsoft ADO.NET 35 Almacenar múltiples tablas Agregar la primera tabla dacustomers = New New SqlDataAdapter _ ("select * from from Customers", conn1) dacustomers.fill(ds, "Customers") Agregar la(s) siguiente(s) tabla(s) daorders = New New SqlDataAdapter _ ("select * from Orders", conn2) daorders.fill(ds, "Orders") Customers conn1 conn2 DataSet Orders Introducción Agregar la primera tabla Para rellenar un objeto DataSet con múltiples objetos DataTable que provienen de una o más fuentes de datos, debemos utilizar múltiples objetos DataAdapter. Cada objeto DataAdapter rellena una tabla distinta del objeto DataSet. Como el orden de los objetos DataAdapter controla el orden de implementación, podemos controlar el orden en que se escriben las actualizaciones a y desde la base de datos. Este control sobre el orden de implementación nos ayuda a conservar la integridad referencial entre las tablas relacionadas de la base de datos. Un ejemplo de control del orden en que se crean los objetos DataTable podría ser un responsable de ventas que necesita recuperar información de clientes, e información sobre órdenes de compra realizadas por cada cliente, desde una base de datos central. Para satisfacer este requerimiento, podemos crear una aplicación Web que contenga dos objetos DataAdapter, el primero para recuperar registros de clientes y el segundo para recuperar registros de órdenes de compra. Cargando primero los datos de los clientes, podemos conservar la integridad referencial entre los clientes y sus órdenes de compra.

37 36 Acceso a datos con Microsoft ADO.NET El siguiente código puebla un objeto Customers DataTable utilizando un objeto DataAdapter denominado dacustomers: Dim conn As SqlConnection Dim dacustomers As SqlDataAdapter Dim daorders As SqlDataAdapter Dim ds As New DataSet() 'create a connection to the Pubs database conn = New SqlConnection("data source=localhost;" & _ "integrated security=true;initial catalog=northwind") 'create the first DataTable dacustomers = New SqlDataAdapter _ ("select CustomerID, CompanyName from Customers", conn) dacustomers.fill(ds, "Customers") SqlConnection conn; SqlDataAdapter dacustomers; SqlDataAdapter daorders; DataSet ds = new DataSet(); // Create a connection to the Pubs database conn = new SqlConnection("data source=localhost; " + "integrated security=true;initial catalog=northwind"); // Create the first DataTable dacustomers = new SqlDataAdapter ("select CustomerID, CompanyName from Customers", conn); dacustomers.fill(ds, "Customers"); Agregar tablas subsiguientes Después de cargar el primer objeto DataTable, podemos rellenar objetos DataTable adicionales y definir las relaciones entre los objetos basadas en el objeto DataTable inicial. Siguiendo con el ejemplo anterior, rellenaríamos el objeto Orders DataTable. El siguiente código puebla el objeto Orders DataTable utilizando un objeto DataAdapter denominado daorders: 'Create the second DataTable daorders = New SqlDataAdapter _ ("select CustomerID, OrderID, OrderDate, ShippedDate " & _ "from Orders", conn) daorders.fill(ds, "Orders") // Create the second DataTable daorders = new SqlDataAdapter ("select CustomerID, OrderID, OrderDate, ShippedDate " + "from Orders", conn); daorders.fill(ds, "Orders"); Nota Deberíamos utilizar un nuevo objeto DataAdapter para cada objeto DataTable de un objeto DataSet.

38 Acceso a datos con Microsoft ADO.NET 37 Crear relaciones Identificar la columna primaria Dim Dim parentcol As As DataColumn = _ ds.tables("customers").columns("customerid") Identificar la columna secundaria Dim Dim childcol As As DataColumn = _ ds.tables("orders").columns("customerid") Crear DataRelation parentcol Tabla Customers DataRelation Dim Dim dr dr As As New New DataRelation _ ("name", parentcol, _ childcol) ds.datarelations.add(dr) childcol DataSet Tabla Orders Código de ejemplo Introducción Se utiliza un objeto DataRelation para referenciar dos objetos DataTable entre sí a través de objetos DataColumn. Por ejemplo, en una relación Customer/Orders, Customers es la tabla primaria de la relación y Orders es la secundaria. Esta relación es similar a una relación clave principal/clave foránea. Las relaciones se crean entre columnas coincidentes de las tablas primaria y secundaria. El valor de DataType para ambas columnas debe ser idéntico. Los objetos DataRelation están contenidos en un objeto DataRelationCollection, al que podemos acceder no sólo a través de la propiedad Relations del objeto DataSet, sino también a través de las propiedades ChildRelations y ParentRelations del objeto DataTable. Para crear un objeto DataRelation, utilizamos el constructor DataRelation y el método Add de la colección Relations de un objeto DataSet.

39 38 Acceso a datos con Microsoft ADO.NET Ejemplo de objeto DataRelation El siguiente ejemplo crea un objeto DataRelation dr y lo agrega al objeto DataSet ds: 'Create DataRelation: each publisher publishes many titles Dim dr As DataRelation Dim parentcol As DataColumn Dim childcol As DataColumn parentcol = ds.tables("customers").columns("customerid") childcol = ds.tables("orders").columns("customerid") dr = New DataRelation("CustOrders", parentcol, childcol) ds.relations.add(dr) // Create DataRelation: each publisher publishes many titles DataRelation dr; DataColumn parentcol; DataColumn childcol; parentcol = ds.tables["customers"].columns["customerid"]; childcol = ds.tables["orders"].columns["customerid"]; dr = new DataRelation("CustOrders", parentcol, childcol); ds.relations.add(dr); Nota Para más información sobre relaciones de datos, ver Explorar una relación entre tablas, en la documentación de Visual Studio.NET.

40 Acceso a datos con Microsoft ADO.NET 39 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 GetChildRows Orders DataSet GetParentRow Introducción Navegar programáticamente En muchos ejemplos de aplicaciones Web, necesitaremos trabajar con datos de más de una tabla, y a menudo querremos trabajar con datos de tablas relacionadas. La relación entre una tabla primaria y una tabla secundaria se denomina relación principal-detalle. Un ejemplo de esta relación sería recuperar el registro de un cliente y visualizar también información de los pedidos relacionados con ese cliente. El modelo de objetos DataSet desconectado nos permite trabajar con múltiples objetos DataTables en nuestra aplicación Web y definir una relación entre esos objetos DataTable. Podemos utilizar la relación para navegar por registros relacionados de las tablas. Una de las principales funciones de una clase DataRelation es permitir la navegación desde un objeto DataTable a otro objeto DataTable en un objeto DataSet. Esta capacidad de navegación nos permite recuperar todos los objetos DataRow relacionados en un objeto DataTable cuando tenemos un único objeto DataRow de un objeto DataTable relacionado. Por ejemplo, tras establecer un objeto DataRelation entre un objeto DataTable de clientes y un objeto DataTable de órdenes de compra, podemos recuperar todas las filas de los pedidos de un determinado cliente utilizando el método DataRow.GetChildRows. El método GetChildRows de un objeto DataRow recupera las filas relacionadas de un objeto DataTable secundario. El método GetParentRow de un objeto DataRow recupera la fila primaria de un objeto DataTable primario.

41 40 Acceso a datos con Microsoft ADO.NET Por ejemplo, podemos tener un control DataGrid denominado dgcustomers que muestre datos del objeto DataTable Customers, que es un objeto DataSet ds. El siguiente código muestra un bucle que recorre todos los registros childorder para obtener una lista de números de pedido: currentparentrow = ds.tables("customers"). _ Rows(dgCustomers.SelectedIndex) For Each r In currentparentrow.getchildrows("custorders") Label1.Text &= r("orderid") & ", " Next currentparentrow = ds.tables["customers"]. Rows[dgCustomers.SelectedIndex]; foreach(datarow r in currentparentrow.getchildrows("custorders")) { Label1.Text += r["orderid"] + ","; }

42 Acceso a datos con Microsoft ADO.NET 41 Navegar visualmente entre tablas utilizando relaciones Dim Dim tableview tableview As As DataView DataView Dim Dim currentrowview As As DataRowView DataRowView tableview tableview = New New DataView(ds.Tables("Customers")) currentrowview currentrowview = tableview(dgcustomers.selectedindex) dgchild.datasource = currentrowview.createchildview("custorders") DataView DataView tableview; tableview; DataRowView DataRowView currentrowview; tableview tableview = new new DataView(ds.Tables["Customers"]); currentrowview currentrowview = tableview[dgcustomers.selectedindex]; dgchild.datasource = currentrowview.createchildview("custorders"); Customers DataRowView Orders DataView CreateChildView DataSet Navegar visualmente Con Visual Studio.NET también podemos mostrar relaciones arrastrando controles desde el cuadro de herramientas. Si deseamos mostrar las filas secundarias de una relación en otro control enlazado a lista, podemos utilizar el método CreateChildView y vincular el control enlazado a lista al objeto DataView resultante. Para conectar dos controles enlazados a lista a través de un objeto DataRelation, necesitamos obtener el objeto DataRowView de la fila seleccionada del control enlazado a lista primario, e invocar el método CreateChildView del objeto DataRowView. El siguiente código crea un objeto DataView desde un objeto DataRelation para mostrar registros secundarios en un control DataGrid: Dim parenttableview As New _ DataView(ds.Tables("Customers")) Dim currentrowview As DataRowView = _ parenttableview(dgcustomers.selectedindex) dgchild.datasource = _ currentrowview.createchildview("custorders") dgchild.databind() DataView parenttableview = new DataView(ds.Tables["Customers"]); DataRowView currentrowview = parenttableview[dgcustomers.selectedindex]; dgchild.datasource = currentrowview.createchildview("custorders"); dgchild.databind();

43 42 Acceso a datos con Microsoft ADO.NET 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 Ejecutar la práctica dirigida por el instructor 1. Abrir la página UseRelations.aspx del proyecto Mod10VB o Mod10CS de la solución 2310Demos. 2. Generar y examinar la página UseRelations.aspx. La página tiene dos controles DataGrid. Cuando seleccionamos un cliente en el primer control DataGrid, el procedimiento de evento lee las filas relacionadas del objeto DataTable Orders, basándose en la relación y los números de pedido que se muestran, y genera un DataView para el control DataGrid secundario. 3. En Visual Studio.NET, visualizar la página de código subyacente de la página UseRelations.aspx. 4. El procedimiento de evento Page_Load invoca tres sub-procedimientos: CreateDataSet, MakeDataRelation y BindToDataGrid: CreateDataSet. Este sub-procedimiento crea el objeto Connection, el objeto DataAdapter y el objeto DataSet. MakeDataRelation. Este sub-procedimiento crea el objeto DataRelation entre las dos tablas. La relación es Publishers a Titles. BindToDataGrid. Este sub-procedimiento vincula el control DataGrid a la tabla primaria, Customers. 5. El procedimiento de evento dgparent_selectedindexchanged muestra filas secundarias de dos modos: programáticamente y visualmente: Programáticamente. El procedimiento invoca el método GetChildRows de la fila actual recorre los registros devueltos para mostrar el campo OrderID de cada fila. Visualmente. El procedimiento invoca el método CreateChildView de la vista de la fila actual y la vincula a un segundo control DataGrid.

44 Acceso a datos con Microsoft ADO.NET 43 Mostrar el Asistente para formularios de datos 1. Hacer clic con el botón derecho en el proyecto Mod10, clic en Agregar y clic en Agregar nuevo elemento. 2. En el cuadro de diálogo Agregar nuevo elemento, hacer clic en el Asistente para formularios de datos en la lista Plantillas, escribir CustOrders.aspx en el campo Nombre y hacer clic en Abrir. 3. Seguir los pasos del asistente como muestra la siguiente tabla. En esta página Hacer lo siguiente Bienvenido Escoger el DataSet que deseamos utilizar Escoger una conexión de datos Escoger tablas o vistas Crear una relación entre tablas Escoger las tablas y columnas a mostrar Hacer clic en Siguiente. Hacer clic en Crear un nuevo DataSet denominado, escribir dscustorders en el campo y hacer clic en Siguiente. Seleccionar una conexión existente a la base de datos Northwind o crear una nueva, y hacer clic en Siguiente. Agregar las tablas Customers y Orders a la lista Elemento(s) seleccionado(s) y hacer clic en Siguiente. Introducir CustOrders en el campo Nombre, seleccionar Customers como Tabla primaria, seleccionar Orders como Tabla secundaria, seleccionar CustomerID como Clave para ambas tablas (primaria y secundaria), hacer clic en el botón > y clic en Siguiente. Mantener los valores predeterminados para mostrar todas las columnas en las tablas Principal y Detalle, y hacer clic en Finalizar. El Asistente para formularios de datos crea un formulario Web Form con un control DataGrid y un botón Load. 4. Hacer clic con el botón derecho en la página CustOrders.aspx del Explorador de soluciones y hacer clic en Ver en el navegador. 5. En el navegador, hacer clic en Cargar. El control DataGrid se carga con datos de la tabla Customers y se muestran los datos. 6. Hacer clic en Mostrar detalles para uno de los clientes y desplazarse hasta la parte inferior de la página. La información detallada del cliente seleccionado se muestra en otra tabla.

45 44 Acceso a datos con Microsoft ADO.NET Lección: acceder 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 Introducción Objetivos de la lección La ventaja de utilizar un objeto DataSet es que proporciona una copia desconectada de la base de datos. Para aplicaciones Web de larga ejecución, el uso de un objeto DataSet es a menudo la mejor opción. Sin embargo, los desarrolladores frecuentemente realizan operaciones cortas y sencillas, como mostrar un único conjunto de datos directamente al usuario o acceder a una única contraseña, con cada petición de datos. Para ese tipo de operaciones, los desarrolladores no necesitan mantener un objeto DataSet; pueden utilizar un objeto DataReader. En esta sección, aprenderemos a leer datos de una fuente de datos utilizando la clase DataReader. En esta lección, aprenderemos a: Explicar cómo funciona la clase DataReader. Crear un objeto DataReader. Leer datos de un objeto DataReader. Vincular un control de servidor enlazado a lista a un objeto DataReader.

46 Acceso a datos con Microsoft ADO.NET 45 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 Introducción Sólo hacia delante, sólo lectura Acceso rápido a datos Conexión a la fuente de datos Cuando se recupera una gran cantidad de datos de una fuente de datos, mantener la memoria abierta puede ser un problema. Por ejemplo, leer filas de una base de datos hace que un objeto DataTable asigne y mantenga memoria para esas filas durante la vida de la tabla. Si usuarios hacen esto contra el mismo equipo a la vez, el uso de la memoria será un factor crítico. Para abordar estas situaciones del uso de memoria, la clase DataReader está diseñada para producir un flujo de datos de sólo lectura y sólo hacia delante que la base de datos devuelve. Por tanto, sólo hay un registro en memoria cada vez en el servidor. La clase DataReader proporciona una transferencia de datos de sólo lectura y sólo hacia delante que puede vincularse a un control enlazado a lista. Por ejemplo, si sólo deseamos mostrar los resultados de una consulta a una base de datos en un único control enlazado a lista, y si no vamos a manipular esos datos, una clase DataReader es una forma ideal de conseguirlo. Los objetos DataReader son más rápidos que los objetos DataSet por la naturaleza ligera de la clase DataReader. En la creación del objeto DataSet, la sobrecarga es mayor debido a que los objetos DataSet tienen la capacidad de leer y escribir datos y examinar hacia delante y hacia atrás. Hay muy poca sobrecarga en un objeto DataReader ya que es sólo hacia delante y sólo de lectura. Esta relativa falta de sobrecarga supone un acceso a datos más rápido con un objeto DataReader que con un objeto DataSet. ADO.NET incluye dos tipos de objetos DataReader: el objeto SqlDataReader para datos SQL Server versión 7.0 o posterior, y el objeto OleDbDataReader para datos OLE DB Data Provider. Utilizamos los objetos OleDbCommand y SqlCommand, y el método ExecuteReader, para transferir datos a un objeto DataReader.

47 46 Acceso a datos con Microsoft ADO.NET Gestión de la conexión por sí mismo Gestión de los datos uno mismo Utiliza menos recursos del servidor A diferencia de un objeto DataAdapter que se abre y cierra automáticamente, debemos gestionar la conexión del objeto DataReader por nosotros mismos. La clase DataReader se parece a la clase DataAdapter en que creamos un objeto Command desde una instrucción y una conexión SQL. Sin embargo, con el objeto DataReader Command, debemos abrir y cerrar explícitamente el objeto Connection. Tenemos la opción de recorrer los datos del objeto DataReader y mostrarlo programáticamente, o podemos vincular un objeto DataReader a un control enlazado a lista. En ambos casos, debemos escribir el código nosotros mismos. Debido a que el DataReader no es una representación en memoria de los datos, utilizar un DataReader afecta poco a la disponibilidad de los recursos del servidor.

48 Acceso a datos con Microsoft ADO.NET 47 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 Código de ejemplo Introducción Utilizar un DataReader Para utilizar un objeto SqlDataReader, necesitamos crear un objeto SqlCommand en lugar de un objeto SqlDataAdapter, que es lo que se necesitaba con los objetos DataSet. El objeto SqlCommand expone un método ExecuteReader que devuelve un objeto SqlDataReader. Similar a un objeto DataAdapter, creamos un objeto Command desde una instrucción SQL y una conexión. Sin embargo, con el objeto DataReader Command, debemos explícitamente abrir y cerrar el objeto Connection. Para utilizar un objeto DataReader, debemos codificar manualmente todo el proceso de conexión. Para utilizar un objeto DataReader se requieren los siguientes pasos: 1. Crear y abrir la conexión a la base de datos. 2. Crear un objeto Command. 3. Crear el objeto 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.

49 48 Acceso a datos con Microsoft ADO.NET El siguiente código de ejemplo abre una conexión a una base de datos, crea un objeto DataReader desde un objeto Command, y recorre el objeto DataReader y agrega campos de los registros a un control ListBox: 'Create connection and command objects Dim conn As New SqlConnection _ ("data source=localhost;integrated security=true;" & _ "initial catalog=pubs") Dim cmdauthors As New SqlCommand _ ("select * from Authors", conn) conn.open() 'create DataReader and display data Dim dr As SqlDataReader dr = cmdauthors.executereader() Do While dr.read() lstbuiltnames.items.add(dr("au_lname") + ", " + _ dr("au_fname")) Loop 'close DataReader and Connection dr.close() conn.close() // Open Connection and create command SqlConnection conn = new SqlConnection ("data source=localhost; integrated security=true; " + "initial catalog=pubs;"); SqlCommand cmdauthors = new SqlCommand ("select * from Authors", conn); conn.open(); // Create DataReader and read data SqlDataReader dr; dr = cmdauthors.executereader(); while (dr.read()) { lstbuiltnames.items.add(dr["au_lname"] + ", " + dr["au_fname"]); } // Close DataReader and Connection dr.close(); conn.close();

50 Acceso a datos con Microsoft ADO.NET 49 Utilizar el controlador de eventos Try Catch Finally Cuando se utilizan conexiones con el objeto DataReader, debemos utilizar siempre una instrucción Try Catch Finally para garantizar que si algo falla, la conexión se cerrará. De lo contrario, la conexión puede permanecer abierta de forma indefinida. El siguiente código de un objeto DataReader captura errores y cierra la conexión: Try conn.open() dr = cmdauthors.executereader() 'use the returned data in the DataReaders Catch e As Exception 'handle the error Finally dr.close() conn.close() End Try try { conn.open(); dr = cmdauthors.executereader(); // use the returned data in the DataReaders } catch(exception e) { // Handle error } finally { dr.close(); conn.close(); }

51 50 Acceso a datos con Microsoft ADO.NET Leer datos desde 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 Do Do While While myreader.read() myreader.read() str str &= &= myreader(1) myreader(1) str str &= &= myreader("field") myreader("field") str str &= &= myreader.getdatetime(2) myreader.getdatetime(2) Loop Loop Cerrar el DataReader Cerrar la conexión while while (myreader.read()) (myreader.read()) { str str += += myreader[1]; myreader[1]; str str += += myreader["field"]; myreader["field"]; str str += += myreader.getdatetime(2); myreader.getdatetime(2); } Invocar Read para cada registro Tras invocar el método ExecuteReader del objeto Command, podemos acceder a un registro del objeto DataReader invocando el método Read. El objeto DataReader se posiciona de modo predeterminado antes del primer registro; por tanto, debemos invocar el método Read antes de acceder a algún dato. Cuando ya no hay más registros disponibles, el método Read devuelve un valor nulo. El siguiente código recorre todos los registros de un objeto DataReader dr, y muestra el campo au_fname en el control Label lblname: Do While dr.read() lblname.text &= dr("au_fname") Loop while (dr.read()) { lblname.text += dr["au_name"]; }

52 Acceso a datos con Microsoft ADO.NET 51 Acceso a campos Para obtener los datos de los campos del registro actual, podemos acceder a un campo por su posición ordinal, por su nombre o invocando un método Get adecuado, como GetDateTime, GetDouble, GetInt32 o GetString. Sugerencia Utilizar un método Get específico es más rápido que acceder por la posición ordinal o por el nombre, porque el DataReader no necesita comprobar el formato de los datos. Por ejemplo, el siguiente código de ejemplo lee los campos del primer y último nombre, ambos valores de cadena, desde el primer registro del objeto DataReader dr, utilizando el método GetString(): dr.read() lblname.text = dr.getstring(1) + ", " + _ dr.getstring(2) dr.read(); lblname.text = dr.getstring(1) + ", " + dr.getstring(2); También podemos referenciar, por nombre, los campos de datos del registro actual del objeto DataReader. Seguidamente, podemos invocar una función de conversión apropiada, como muestra el siguiente código de ejemplo: Cerrar el DataReader Cerrar la conexión myreader("au_fname") myreader["au_fname"]; Mientras el objeto DataReader está en uso, la conexión asociada está ocupada dando servicio al objeto DataReader. Por tanto, debemos invocar el método Close para cerrar el objeto DataReader cuando finalicemos su uso, como muestra el siguiente código de ejemplo: myreader.close() myreader.close(); DataReader no cierra automáticamente la conexión. Debemos invocar explícitamente el método Close para cerrar la conexión cuando finalicemos su uso, como muestra el siguiente código de ejemplo: conn.close() conn.close();

53 52 Acceso a datos con Microsoft ADO.NET Vincular un DataReader a un control enlazado a lista Crear el control <asp:datagrid <asp:datagrid id="dgauthors" id="dgauthors" runat="server" runat="server" /> /> Vincular a un DataReader dgauthors.datasource dgauthors.datasource = dr dr dgauthors.databind() dgauthors.databind() dgauthors.datasource dgauthors.datasource = dr; dr; dgauthors.databind(); dgauthors.databind(); Introducción Además de recorrer los datos del objeto DataReader y mostrarlos programáticamente, podemos vincular un objeto DataReader a un control enlazado a lista. Para vincular un objeto DataReader a un control enlazado a lista, establecemos la propiedad DataSource del control enlazado a lista al objeto DataReader. El siguiente código de ejemplo crea un objeto DataReader dr, lo vincula a un control ListBox au_lname, y cierra los objetos DataReader y Connection: Dim conn As New SqlConnection _ ("data source=localhost;integrated security=true;" & _ "initial catalog=pubs") conn.open() Dim cmdauthors As New SQLCommand _ ("select * from Authors", conn) 'bind the datareader to a listbox Dim dr As SqlDataReader dr = cmdauthors.executereader() lstboundnames.datasource = dr lstboundnames.datatextfield = "au_lname" lstboundnames.databind() 'close the datareader and the connection dr.close() conn.close()

54 Acceso a datos con Microsoft ADO.NET 53 SqlConnection conn = new SqlConnection ("data source=localhost; integrated security=true; " + "initial catalog=pubs"); conn.open(); SqlCommand cmdauthors = new SqlCommand ("select * from Authors", conn); //bind the datareader to a listbox SqlDataReader dr; dr = cmdauthors.executereader(); lstboundnames.datasource = dr; lstboundnames.datatextfield = "au_lname"; lstboundnames.databind(); //close the datareader and the connection dr.close(); conn.close();

55 54 Acceso a datos con Microsoft ADO.NET 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 En esta práctica, reorganizaremos las líneas de código ADO.NET en el orden correcto para crear un objeto DataReader. Ejecutar la práctica Visualizar la página o y colocar las líneas de código ADO.NET en el orden correcto para crear un objeto DataReader. Nota Hay varias respuestas correctas para esta práctica.

56 Acceso a datos con Microsoft ADO.NET 55 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 Introducción En esta demostración, examinaremos el código que crea y rellena un objeto DataReader utilizando un objeto SQLCommand que vincula el objeto DataReader a un control ListBox, y vuelve a crear el DataReader para vincularlo a un segundo control ListBox. Ejecutar la demostración 1. Abrir la página DataReader.aspx del proyecto Demo08VB o Demo08CS que se pueden encontrar dentro del fichero demos08.zip. 2. Generar y examinar la página DataReader.aspx. Hay dos cuadros de lista que muestran los mismos datos. El primer cuadro de lista está vinculado a un objeto DataReader, mientras que el segundo cuadro de lista se genera recorriendo los registros del objeto DataReader y generando programáticamente cada entrada del control ListBox. 3. En Visual Studio.NET, visualizar el código subyacente de la página DataReader.aspx. 4. En el procedimiento de evento Page_Load, mostrar el código que hace lo siguiente: Crea un objeto SqlConnection. Crea un objeto SqlCommand. Crea un objeto DataReader. Vincula el objeto DataReader al primer control ListBox. Cerrar el objeto DataReader y crearlo de nuevo. Este paso es necesario debido a que un objeto DataReader es una vista de los datos sólo hacia delante y ya habíamos llegado al final de los datos cuando el objeto DataReader se vinculó al control ListBox. Recorre el objeto DataReader y agrega dos campos por cada elemento del segundo control ListBox.

Mecanismos de acceso a datos usando ADO.NET

Mecanismos de acceso a datos usando ADO.NET Mecanismos de acceso a datos usando ADO.NET En esta sesión Veremos conceptos de ADO.NET para acceso a datos, con ejemplos de uso en aplicaciones ASP.NET Agenda Modelo de objetos de ADO.NET Introducción

Más detalles

ADO.NET. Arquitectura de ADO.NET

ADO.NET. Arquitectura de ADO.NET ADO.NET ADO.NET proporciona acceso coherente a orígenes de datos como SQL Server y XML, así como a orígenes de datos expuestos mediante OLE DB y ODBC. Las aplicaciones de consumidor que comparten datos

Más detalles

TEMA 6. ARQUITECTURA DE ADO.NET 6.1. INTRODUCCIÓN A ADO.NET

TEMA 6. ARQUITECTURA DE ADO.NET 6.1. INTRODUCCIÓN A ADO.NET TEMA 6. ARQUITECTURA DE ADO.NET 6.1. INTRODUCCIÓN A ADO.NET Una vez hecha una pequeña aproximación a las bases de datos y su manejo vamos a centrarnos en el estudio de ADO.NET, que, como se anticipaba

Más detalles

Bases de Datos en VB.Net. El control Datagrid, Relaciones y Vistas.1

Bases de Datos en VB.Net. El control Datagrid, Relaciones y Vistas.1 Bases de Datos en VB.Net. El control Datagrid, Relaciones y Vistas.1 (cc) 2007 Justo Sáez Arenas http://vb.jsaez.com/ Contenidos: 1. Introducción... 1 2. DataGrid... 2 Creación de un DataGrid a través

Más detalles

Microsoft Dynamics. Instalación de Management Reporter for Microsoft Dynamics ERP

Microsoft Dynamics. Instalación de Management Reporter for Microsoft Dynamics ERP Microsoft Dynamics Instalación de Management Reporter for Microsoft Dynamics ERP Fecha: mayo de 2010 Tabla de contenido Introducción... 3 Información general... 3 Requisitos del sistema... 3 Instalación

Más detalles

INSTALACIÓN DE MEDPRO

INSTALACIÓN DE MEDPRO 1 Estimado Cliente: Uno de los objetivos que nos hemos marcado con nuestra nueva plataforma de gestión, es que un cliente pueda instalar MedPro y realizar su puesta en marcha de forma autónoma. Siga paso

Más detalles

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO

UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO www.ubs-systems.com Teléfono: 91 3681185 UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO Unidesys Versión 2011 1 CONTENIDO 1 INTRODUCCIÓN 3 2 FUENTES DE DATOS 4 3 INSTALACIÓN DEL

Más detalles

Conectar a unidad de red

Conectar a unidad de red Materiales: Disco de sistema operativo (si fuera necesario). Conexión a red. Recurso, previamente, compartido en un equipo. Tiempo: 2 minutos. Dificultad: Baja. Descripción. Proceso que permite acceder

Más detalles

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION Ciclo 02/2013 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION GUÍA DE LABORATORIO #11 Nombre de la Práctica: ADO.NET y conexiones a Base de Datos. Parte III Lugar de ejecución:

Más detalles

Toda base de datos relacional se basa en dos objetos

Toda base de datos relacional se basa en dos objetos 1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.

Más detalles

Programación de Consultas SQL ADO.Net LDP3501-2011 / DUOC-AV

Programación de Consultas SQL ADO.Net LDP3501-2011 / DUOC-AV En esta guía: Programación de Consultas SQL ADO.Net LDP3501-2011 / DUOC-AV Clases de Acceso a datos ADO.Net en System.Data.SqlClient... 1 SqlConnection... 1 SqlCommand... 2 SqlDataAdapter... 3 Controles

Más detalles

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia

Más detalles

Acceso a datos con ADO.NET

Acceso a datos con ADO.NET Acceso a datos con ADO.NET Índice Descripción 1 Lección: conceptos de bases de datos 2 Lección: descripción de ADO.NET 14 Lección: trabajar con datos 29 Acceder a datos con DataReaders 43 Acceso a datos

Más detalles

Creación y administración de grupos locales

Creación y administración de grupos locales Creación y administración de grupos locales Contenido Descripción general 1 Introducción a los grupos de Windows 2000 2 Grupos locales 5 Grupos locales integrados 7 Estrategia para utilizar grupos locales

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows Qué es Recuperación? Recuperación del Panel de control proporciona varias opciones que pueden ayudarle a recuperar el equipo de un error grave. Nota Antes de usar Recuperación, puede probar primero uno

Más detalles

Configuracion Escritorio Remoto Windows 2003

Configuracion Escritorio Remoto Windows 2003 Configuracion Escritorio Remoto Windows 2003 Instalar y configurar servicio de Terminal Server en Windows 2003 Fecha Lunes, 25 diciembre a las 17:04:14 Tema Windows (Sistema Operativo) Os explicamos cómo

Más detalles

Guía de Apoyo Project Web Access. (Jefe de Proyectos)

Guía de Apoyo Project Web Access. (Jefe de Proyectos) Guía de Apoyo Project Web Access (Jefe de Proyectos) 1 ÍNDICE Contenido INTRODUCCIÓN... 3 CAPITULO I: ELEMENTOS INICIALES DE PROJECT WEB ACCESS... 4 Configuración General... 4 Área de Trabajo del Proyecto...

Más detalles

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema Sistema de Gestión Portuaria Uso General del Sistema Uso General del Sistema Página 1 de 21 Contenido Contenido... 2 1.Ingreso al Sistema... 3 2.Uso del Menú... 6 3.Visualizar Novedades del Sistema...

Más detalles

[email protected] 1

abacformacio@abacformacio.com 1 Programación de páginas web: servidor (ASP.NET) Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte servidor con la tecnología ASP.NET y el servidor de bases de datos

Más detalles

Presentación 4: ADO.NET

Presentación 4: ADO.NET MICROSOFT Presentación 4: ADO Jueves, 21 de Octubre de 2004 Iván Bernal, Ph.D. [email protected] Quito Ecuador Copyright @2004, I. Bernal Agenda Visión general de ADO 2 Bibliografía (1) D. Platt,

Más detalles

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida 9.1 Operaciones CAPITULO 9 Diseño de una Base de Datos Relacional Distribuida Las consultas distribuidas obtienen acceso a datos de varios orígenes de datos homogéneos o heterogéneos. Estos orígenes de

Más detalles

Correo Electrónico: Webmail: Horde 3.1.1

Correo Electrónico: Webmail: Horde 3.1.1 CONTENIDOS: PAGINA Qué es Webmail?. 2 Acceder a Webmail. 2 Instilación del Certificado UCO. 4 Instilación Certificado I.explorer. 4 Instilación Certificado Firefox. 7 Opciones Webmail. 8 Opciones Información

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

1. Bases de datos desde VB.Net 1.1 Introducción. Desde Vb Net 2005 se puede acceder a las siguientes bases de datos, utilizando las clases adecuadas.

1. Bases de datos desde VB.Net 1.1 Introducción. Desde Vb Net 2005 se puede acceder a las siguientes bases de datos, utilizando las clases adecuadas. 1. Bases de datos desde VB.Net 1.1 Introducción. Desde Vb Net 2005 se puede acceder a las siguientes bases de datos, utilizando las clases adecuadas. Oracle SQL Server Access Las que se puedan acceder

Más detalles

Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica

Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica Portal Del Emisor MANUAL DEL USUARIO Plataforma de Facturación Electrónica 1. Índice 1. Índice... 2 2. Descripción General... 3 2.1. Alcance... 3 2.2. Flujo de navegación... 4 2.3. Perfil del Usuario...

Más detalles

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

CIF-KM. GUÍA DE LOS PRIMEROS PASOS CIF-KM. GUÍA DE LOS PRIMEROS PASOS Secciones 1. CONCEPTOS PREVIOS. 2. INSTALAR CIF-KM. 2.1 Descargar e instalar CIF-KM. 2.2 Configuración de CIF-KM. 2.3 Acceso externo al servidor de CIF-KM. 3. PRIMERA

Más detalles

Administrar El Usuario Mediante Windows NT

Administrar El Usuario Mediante Windows NT Administrar El Usuario Mediante Windows NT Administración de usuarios El Administrador de usuarios es la utilidad estándar que ofrece Windows NT. Como su nombre indica, se encarga de la administración

Más detalles

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1 Traslado de Copias y Presentación de Escritos Manual de Usuario V.3.1 Página: 2 45 INDICE INTRODUCCIÓN... 3 1 ACCESO A LA APLICACIÓN... 3 2 PROCESO DE FIRMA... 4 3 TRASLADOS PENDIENTES DE ACEPTAR POR EL

Más detalles

Operación Microsoft Access 97

Operación Microsoft Access 97 Trabajar con Controles Características de los controles Un control es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comando o un rectángulo que se coloca en un formulario o informe

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

Componentes de Integración entre Plataformas Información Detallada

Componentes de Integración entre Plataformas Información Detallada Componentes de Integración entre Plataformas Información Detallada Active Directory Integration Integración con el Directorio Activo Active Directory es el servicio de directorio para Windows 2000 Server.

Más detalles

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor

Más detalles

DataSet. DataSet (System.Data):

DataSet. DataSet (System.Data): (System.Data): El de ADO.NET es una representación de datos residente en memoria que proporciona un modelo de programación relacional coherente independientemente del origen de datos que contiene. Un representa

Más detalles

Índice de contenidos Iniciación a VB.NET Bases de Datos

Índice de contenidos Iniciación a VB.NET Bases de Datos Índice de contenidos Iniciación a VB.NET Bases de Datos Introducción 1 A quién va dirigido este libro...2 Qué aspectos cubre este libro...2 Qué necesito para utilizar este libro...2 Convenciones...3 Servicio

Más detalles

Uso básico desde la propia página del sitio

Uso básico desde la propia página del sitio Para acceder al entorno de Office 365, escriba la dirección http://correo.ulpgc.es. Antes de introducir el nombre de usuario, marcamos la opción de "Mantener la sesión iniciada" e iniciamos sesión introduciendo

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

Programación páginas web. Servidor (PHP)

Programación páginas web. Servidor (PHP) Programación páginas web. Servidor (PHP) Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte servidor con la tecnología PHP y el servidor de bases de datos MySQL.

Más detalles

CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO

CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO MANUAL DE USUARIO CATÁLOGO MANUAL DE USUARIO CATÁLOGO MANUAL DE USUARIO 1. CATÁLOGO MANUAL DE USUARIO CATÁLOGO AHORA CATÁLOGO MANUAL DE USUARIO 1 1. Introducción AHORA Catálogo es una aplicación

Más detalles

Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010

Tareas básicas en OneNote 2010 Corresponde a: Microsoft Office OneNote 2010 areas básicas en OneNote 2010 - OneNote - Office.com http://office.microsoft.com/es-ar/onenote-help/tareas-basicas-en-onenote... 1 de 3 23/04/2012 10:40 p.m. Soporte / OneNote / Ayuda y procedimientos

Más detalles

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1 Manual de usuario Versión: 1.3 Edición: 05/02/2015 1 Índice Formula Integration Manual de Usuario... 3 1. Introducción... 3 1.1. Funcionalidades... 3 2. Instalación... 3 2.1. Requisitos mínimos... 3 2.2.

Más detalles

Introducción a Visual Studio.Net

Introducción a Visual Studio.Net Introducción a Visual Studio.Net Visual Studio es un conjunto completo de herramientas de desarrollo para la generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de escritorio y aplicaciones

Más detalles

Eurowin 8.0 SQL. Manual de la FIRMA DIGITALIZADA

Eurowin 8.0 SQL. Manual de la FIRMA DIGITALIZADA Eurowin 8.0 SQL Manual de la FIRMA DIGITALIZADA Documento: me_firmadigitalizada Edición: 02 Nombre: Manual de la Firma Digitalizada en Eurowin Fecha: 19-05-2011 Tabla de contenidos 1. FIRMA DIGITALIZADA

Más detalles

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA El Acceso al correo a través de OWA (Outlook Web Access) es una herramienta que permite a los usuarios consultar sus mensajes en una interfaz Web a través de un

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín

TEMA 4: EMPEZANDO A NAVEGAR ESCUELA UNIVERSITARIA DE INFORMÁTICA. Raúl Martín Martín TEMA 4: EMPEZANDO A ESCUELA UNIVERSITARIA DE INFORMÁTICA NAVEGAR Raúl Martín Martín SERVICIOS DE INTERNET SERVICIOS DE INTERNET Las posibilidades que ofrece Internet se denominan servicios. Hoy en día,

Más detalles

Microsoft Dynamics. Migración de FRx 6.7 a Management Reporter for Microsoft Dynamics ERP

Microsoft Dynamics. Migración de FRx 6.7 a Management Reporter for Microsoft Dynamics ERP Microsoft Dynamics Migración de FRx 6.7 a Management Reporter for Microsoft Dynamics ERP Fecha: mayo de 2010 Tabla de contenido Introducción... 3 Información general sobre el proceso de migración de Management

Más detalles

ADO.NET. Contenido. Transición a ADO.NET. Introducción a ADO.NET. Limites de ADO

ADO.NET. Contenido. Transición a ADO.NET. Introducción a ADO.NET. Limites de ADO ADO.NET Por Jorge Martín Rodríguez Castro y Alfredo Raúl Fenco Paz Actualizado al 19 de agosto de 2006 Contenido Transición a ADO.NET Introducción a ADO.NET Proveedores de Datos.NET Modelo de Objetos ADO.NET

Más detalles

Microsoft Access proporciona dos métodos para crear una Base de datos.

Microsoft Access proporciona dos métodos para crear una Base de datos. Operaciones básicas con Base de datos Crear una Base de datos Microsoft Access proporciona dos métodos para crear una Base de datos. Se puede crear una base de datos en blanco y agregarle más tarde las

Más detalles

LiLa Portal Guía para profesores

LiLa Portal Guía para profesores Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista

Más detalles

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)

Más detalles

Práctica: Copia de seguridad y restauración de datos

Práctica: Copia de seguridad y restauración de datos Copia de seguridad y restauración de datos 1 Práctica: Copia de seguridad y restauración de datos Objetivos En este laboratorio, aprenderá a: Realizar copias de seguridad de archivos con la utilidad de

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

Manual SSO Avant2. www.avant2.es [email protected] Última revisión: 02/05/2013. Copyright Codeoscopic S.A.

Manual SSO Avant2. www.avant2.es soporte@avant2.es Última revisión: 02/05/2013. Copyright Codeoscopic S.A. Manual SSO Avant2 www.avant2.es [email protected] Última revisión: 02/05/2013 Copyright Codeoscopic S.A. Este documento es propiedad y copyright de Codeoscopic SA, y su contenido es confidencial. Este

Más detalles

Programación páginas web con ASP.NET 3.5 (C#)

Programación páginas web con ASP.NET 3.5 (C#) Horas de teoría: 40 Horas de práctica: 40 Programación páginas web con ASP.NET 3.5 (C#) Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript

Más detalles

Contenido. Email: capacitacion@u cursos.cl / Teléfono: 9782450

Contenido. Email: capacitacion@u cursos.cl / Teléfono: 9782450 GMI Contenido PUBLICAR AVISO... 3 CREAR PROCESO DE SELECCIÓN... 6 VER/ELIMINAR AVISOS PUBLICADOS... 8 ETAPAS DE UN PROCESO DE SELECCIÓN... 10 SECCIONES DE LOS PROCESOS DE SELECCIÓN (GPS)... 21 PERSONALIZAR

Más detalles

Tecnología de la Información y la Comunicación. Base de datos. Consultas - 2007 -

Tecnología de la Información y la Comunicación. Base de datos. Consultas - 2007 - Tecnología de la Información y la Comunicación Base de datos Consultas - 2007 - Profesores del área Informática: Guillermo Storti Gladys Ríos Gabriel Campodónico Consultas Se utilizan consultas para ver,

Más detalles

GENERACIÓN DE TRANSFERENCIAS

GENERACIÓN DE TRANSFERENCIAS GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base

Más detalles

CAPITULO 8. Planeamiento, Arquitectura e Implementación

CAPITULO 8. Planeamiento, Arquitectura e Implementación CAPITULO 8 Planeamiento, Arquitectura e Implementación 8.1 Replicación en SQL Server La replicación es un conjunto de tecnologías destinadas a la copia y distribución de datos y objetos de base de datos

Más detalles

DOCUCONTA Versión 8.0.2. Septiembre 2010 MINISTERIO DE HACIENDA. Manual de instalación SECRETARÍA DE ESTADO DE PRESUPUESTOS Y GASTOS

DOCUCONTA Versión 8.0.2. Septiembre 2010 MINISTERIO DE HACIENDA. Manual de instalación SECRETARÍA DE ESTADO DE PRESUPUESTOS Y GASTOS SECRETARÍA DE ESTADO DE PRESUPUESTOS Y GASTOS INTERVENCIÓN GENERAL DE LA SUBDIRECCIÓN GENERAL DE APLICACIONES DE CONTABILIDAD Y CONTROL DOCUCONTA Versión 8.0.2 Septiembre 2010 Manual de instalación C/

Más detalles

MANUAL DE AYUDA MÓDULO PDA ALMACEN E INVENTARIO

MANUAL DE AYUDA MÓDULO PDA ALMACEN E INVENTARIO MANUAL DE AYUDA MÓDULO PDA ALMACEN E INVENTARIO INDICE DE CONTENIDOS 1) INTRODUCCIÓN... 3 2) OPERACIÓN CON LA PDA... 3 3) GOTELGEST.NET PDA... 3 1) PANTALLA DE INICIO... 3 2) NUEVO DOCUMENTO... 3 3) EDITAR

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian Guía de Instalación Página 1 Índice ESCUDO MOVISTAR.... 3 1. INSTALACIÓN DEL SERVICIO ESCUDO MOVISTAR... 3 1.1. VERSIONES SOPORTADAS... 3

Más detalles

PROGRAMA FORMATIVO MICROSOFT ACCESS 2003 (COMPLETO)

PROGRAMA FORMATIVO MICROSOFT ACCESS 2003 (COMPLETO) PROGRAMA FORMATIVO MICROSOFT ACCESS 2003 (COMPLETO) www.bmformacion.es [email protected] Objetivos Descripción del funcionamiento del programa de gestión de bases de datos Microsoft Access 2003, estudiando

Más detalles

Utilidades de la base de datos

Utilidades de la base de datos Utilidades de la base de datos Desde esta opcion del menú de Access, podemos realizar las siguientes operaciones: Convertir Base de datos Compactar y reparar base de datos Administrador de tablas vinculadas

Más detalles

PowerPoint 2010 Modificar el diseño de las diapositivas

PowerPoint 2010 Modificar el diseño de las diapositivas PowerPoint 2010 Modificar el diseño de las diapositivas Contenido CONTENIDO... 1 MODIFICAR EL DISEÑO DE LAS DIAPOSITIVAS... 2 DISEÑO DE DIAPOSITIVAS EN POWERPOINT WEB APP... 13 1 Modificar el diseño de

Más detalles

LA INTRANET -Manual general-

LA INTRANET -Manual general- LA INTRANET -Manual general- 0/ Localizar la intranet en los tablet del alumno. Como la Intranet está instalada en algunos ordenadores, debemos localizarla primeramente para poder trabajar con ella. 1º/

Más detalles

Pág. Tabla de contenido

Pág. Tabla de contenido Pág. Tabla de contenido Qué es Blackboard?... 4 Requerimientos de Hardware y Software... 4 Cómo iniciar?... 5 Cómo recuperar la contraseña?... 6 Navegación... 9 Cómo configurar mi perfil?... 9 Cambiar

Más detalles

Introducción a las redes de computadores

Introducción a las redes de computadores Introducción a las redes de computadores Contenido Descripción general 1 Beneficios de las redes 2 Papel de los equipos en una red 3 Tipos de redes 5 Sistemas operativos de red 7 Introducción a las redes

Más detalles

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2 Manual de software Dynamic Cloud 10/2014 MS-Dynamic_Cloud v1.2 ÍNDICE GENERAL 1. INTRODUCCIÓN... 2 1.1 Configuración mínima del PC... 2 2. INSTALAR DYNAMIC CLOUD... 3 2.1 Ejecutar Dynamic Cloud por primera

Más detalles

GVisualPDA Módulo de Almacén

GVisualPDA Módulo de Almacén GVisualPDA Módulo de Almacén GVisualPDA es una aplicación para Windows Mobile 5/6 que amplía más aún las posibilidades de integración del software de gestión GVisualRec permitiendo estar conectados en

Más detalles

Programación de Consultas SQL ADO.Net LDP3501-2011 / DUOC-AV

Programación de Consultas SQL ADO.Net LDP3501-2011 / DUOC-AV En esta guía: Programación de Consultas SQL ADO.Net LDP3501-2011 / DUOC-AV Procedimientos Almacenados... 1 Procedimientos Almacenados (Stored Procedures)... 1 Sintaxis de Procedimientos Almacenados...

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

PUCV - Pontificia Universidad Católica de Valparaíso

PUCV - Pontificia Universidad Católica de Valparaíso PUCV - Pontificia Universidad Católica de Valparaíso INICIO IBM QUICKR IBM Quickr es un software de colaboración en equipos, el cual permite compartir archivos e información de forma instantánea y directa

Más detalles

Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica

Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica HOJA DE CONTROL Título Nombre del Fichero Autores Guía rápida de la Oficina Virtual (Solicit@V5) UHU_GuiaRapidaSolicita_V5.pdf

Más detalles

Nombre: Francis Ariel Jiménez Zapata. Matricula: 2010-0077. Tema: Trabajando con Windows Server 2008. Materia: Sistema Operativo II.

Nombre: Francis Ariel Jiménez Zapata. Matricula: 2010-0077. Tema: Trabajando con Windows Server 2008. Materia: Sistema Operativo II. Nombre: Francis Ariel Jiménez Zapata Matricula: 2010-0077 Tema: Trabajando con Windows Server 2008 Materia: Sistema Operativo II Grupo: 2 Facilitador: José Doñe Crear y administrar grupos en Active Directory

Más detalles

Activación de un Escritorio Remoto

Activación de un Escritorio Remoto Activación de un Escritorio Remoto La activación de un Escritorio Remoto se realiza en dos fases, en la primera se habilita a un Usuario de un ordenador para que pueda admitir una conexión remota, la segunda

Más detalles

Inicio Programas Accesorios Explorador de Windows Archivo Nuevo Carpeta

Inicio Programas Accesorios Explorador de Windows Archivo Nuevo Carpeta ACTIVIDAD #2 Configurar la seguridad de una carpeta antes de compartirla 1. Inicie sesión en el equipo como un usuario miembro de los grupos Usuarios avanzados o Administradores. 2. Haga clic en Inicio,

Más detalles

GUÍA BÁSICA USUARIO MOODLE 2.6

GUÍA BÁSICA USUARIO MOODLE 2.6 GUÍA BÁSICA USUARIO MOODLE 2.6 Esta guía representa los pasos a seguir por el alumno desde la aceptación en un curso Moodle hasta su posterior utilización, pero antes de explicar la forma de acceder y

Más detalles

Guía Indico del Usuario Administrador CERN

Guía Indico del Usuario Administrador CERN Guía Indico del Usuario Administrador CERN por CERN Guía Indico del Usuario Administrador Tabla de Contenidos 1. Comenzando con Indico...1 1.1. Crear una Cuenta de Administración...1 1.2. Cuentas Creadas

Más detalles

Microsoft Dynamics. Guía de configuración de proveedores de datos de Management Reporter for Microsoft Dynamics ERP

Microsoft Dynamics. Guía de configuración de proveedores de datos de Management Reporter for Microsoft Dynamics ERP Microsoft Dynamics Guía de configuración de proveedores de datos de Management Reporter for Microsoft Dynamics ERP Fecha: mayo de 2010 Tabla de contenido Introducción... 3 Requisitos previos... 3 Instalación

Más detalles

INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA

INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA TERMINAL SERVER TUTOR: JORGE CASTELLANOS MORFIN 19/02/2012 VILLA DE ALVARES, COLIMA Indice Introducción... 3 Objetivo... 3 Lista de Materiales... 3 Procedimiento...

Más detalles

Manual Usuario SEDI. Solicitud Electrónica Diseños Industriales (SEDI) Manual de Usuario. Versión: v2.0. Página: 1 de 22

Manual Usuario SEDI. Solicitud Electrónica Diseños Industriales (SEDI) Manual de Usuario. Versión: v2.0. Página: 1 de 22 Solicitud Electrónica Diseños Industriales () Manual de Usuario Manual Usuario Página: 1 de 22 1. Acceso al trámite Pinchado en Sede Electrónica o escribiendo la URL: https://sede.oepm.gob.es/esede/es/index.html

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

Guía de instalación de la carpeta Datos de IslaWin

Guía de instalación de la carpeta Datos de IslaWin Guía de instalación de la carpeta Datos de IslaWin Para IslaWin Gestión CS, Classic o Pyme a partir de la revisión 7.00 (Revisión: 10/11/2011) Contenido Introducción... 3 Acerca de este documento... 3

Más detalles

Sitios remotos. Configurar un Sitio Remoto

Sitios remotos. Configurar un Sitio Remoto Sitios remotos Definir un sitio remoto significa establecer una configuración de modo que Dreamweaver sea capaz de comunicarse directamente con un servidor en Internet (por eso se llama remoto) y así poder

Más detalles

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO PRÁCTICA 4: Implementación de un Cliente de Correo

Más detalles

GENERACIÓN DE ANTICIPOS DE CRÉDITO

GENERACIÓN DE ANTICIPOS DE CRÉDITO GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos

Más detalles

Operación Microsoft Windows

Operación Microsoft Windows Entornos de red Concepto de red En el nivel más elemental, una red consiste en dos equipos conectados entre sí mediante un cable de forma tal que puedan compartir datos. Todas las redes, no importa lo

Más detalles

Acceso a Datos con ADO.NET

Acceso a Datos con ADO.NET Acceso a Datos con ADO.NET ADO.NET constituye la interfaz fundamental de las aplicaciones para proporcionar servicios de acceso a datos en la plataforma Microsoft.NET, donde existen, básicamente, dos elementos:

Más detalles

Organizándose con Microsoft Outlook

Organizándose con Microsoft Outlook Organizándose con Microsoft Outlook Objetivo: Identificar herramientas para organizar los correos electrónicos, administrar tiempos por medio de la agenda y comunicarse con los demás. Destrezas técnicas

Más detalles

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes: Descripción del ambiente de trabajo Entrar y salir de la aplicación Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes: A través del botón :

Más detalles

Formularios. Formularios Diapositiva 1

Formularios. Formularios Diapositiva 1 Formularios Crear un formulario utilizando el Asistente para formularios Modificación en vista Diseño Adición de Controles a un Formulario Adición de un Subformulario a un formulario Formularios Diapositiva

Más detalles

Capture Pro Software. Introducción. A-61640_es

Capture Pro Software. Introducción. A-61640_es Capture Pro Software Introducción A-61640_es Introducción a Kodak Capture Pro Software y Capture Pro Limited Edition Instalación del software: Kodak Capture Pro Software y Network Edition... 1 Instalación

Más detalles

SIEWEB. La intranet corporativa de SIE

SIEWEB. La intranet corporativa de SIE La intranet corporativa de SIE por ALBA Software Acceso a los servicios SIE desde páginas Web para los usuarios de sistema *. Administración del Sistema (cuentas de usuarios, permisos, servicios, etc...)

Más detalles

UNIDAD DIDACTICA 4 INTEGRACIÓN DE CLIENTES WINDOWS EN UN DOMINIO

UNIDAD DIDACTICA 4 INTEGRACIÓN DE CLIENTES WINDOWS EN UN DOMINIO UNIDAD DIDACTICA 4 INTEGRACIÓN DE CLIENTES Eduard Lara 1 1. CONFIGURACIÓN PREVIA DE LOS CLIENTES WINDOWS Objetivo: Configurar los clientes Windows XP/Vista en red para posteriormente poderlos integrar

Más detalles

REGISTRAR LOS SITIOS WEB MÁS INTERESANTES

REGISTRAR LOS SITIOS WEB MÁS INTERESANTES REGISTRAR LOS SITIOS WEB MÁS INTERESANTES La forma más fácil de volver a páginas Web que visitamos con frecuencia es almacenándolas en una lista. En Internet Explorer estas páginas se denominan sitios

Más detalles