SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
COMPUTACIÓN E INFORMÁTICA 2
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
DEFINICIÓN DE TÉRMINOS BÁSICOS
 PROGRAMACIÓN. Es un proceso para convertir especificaciones generales de un sistema en
instrucciones utilizables por la máquina, que produzcan los resultados deseados. Se le conoce
también como desarrollo de software.
 PROGRAMA. Es una lista de instrucciones que la computadora debe seguir para procesar datos
y convertirlos en información. Las instrucciones se componen de enunciados usados en lenguajes
de programación.
 LENGUAJE DE PROGRAMACIÓN.
Es un conjunto de símbolos junto a un conjunto de reglas para combinar dichos símbolos que se
usan para expresar programas. Constan de un léxico, una sintaxis y una semántica.
¿Qué conoces tú por léxico, sintaxis y semántica?
LÉXICO: Conjunto de símbolos permitidos o vocabulario
SINTAXIS: Reglas que indican cómo realizar las construcciones del lenguaje
SEMÁNTICA: Reglas que permiten determinar el significado de cualquier construcción del
lenguaje.
 ANÁLISIS DE SISTEMAS. Es el proceso de clasificación e interpretación de hechos,
diagnostico de problemas y empleo de la información para recomendar mejoras al
sistema.
 AUTOMATIZACIÓN. Sustitución de habilidades humanas por operaciones automáticas de
máquinas.
 ANALISTA. Profesional de la computación que se dedica a planificar y analizar todos los
procesos necesarios para solucionar un problema determinado o realizar una aplicación
deseada mediante una computadora.
 ARCHIVOS. Conjuntos de datos almacenados según rasgo común a todos ellos.
 BASE DE DATOS. Conjunto de ficheros de datos organizados según método que facilita la
actualización, acceso y recuperación de información contenida en ellos.
 CICLO DE VIDA PARA EL DESARROLLO DE SISTEMA. Consiste en el desarrollo de sistema
por etapas, que forman el ciclo de desarrollo de sistema. Cada etapa del ciclo se desarrolla
para soporte a las etapas sucesivas, es decir, que no pueden ser desarrolladas de forma
aislada e independiente.
 DATOS. Materia prima empleada para crear información útil.
 DESARROLLO DE SISTEMA. Consiste en la creación de paquetes de software para
satisfacerlas necesidades de una organización específica y de sus usuarios.
 DISEÑO DE SISTEMAS. Es el proceso de planificar, reemplazar o complementar un sistema
organizacional existente.
 DOCUMENTACIÓN. Es una actividad que consiste en registrar los hechos y las
especificaciones de un sistema.
 HARDWARE. Sistema formado por el equipo computacional, es decir, por las partes físicas
de la computadora”. Incluye la unidad central de proceso, memoria principal, y los
dispositivos periféricos.
 IMPLEMENTACIÓN DE SISTEMA. Es el proceso de verificar e instalar nuevos equipos,
entrenar a los usuarios, instalar la aplicación y construir todos los archivos de datos
necesarios para la utilización del mismo.
 INTERFAZ DE USUARIO. Es la especificación de una conversación entre el usuario del
sistema y el ordenador.
 PROGRAMACIÓN ORIENTADA A OBJETOS. Consiste en crear componentes de una
aplicación independientes que respondan a las acciones del usuario, al sistema y que se
puedan reutilizar fácilmente.
 SISTEMA. Es el conjunto de programas que interrelacionados entre sí satisfacen las
necesidades de la información.
DESARROLLO DE SOFTWARE.
Consiste en la creación de paquetes de software para satisfacerlas necesidades de una organización
específica y de sus usuarios.
El Grupo de Desarrollo de Software es el encargado de coordinar los trabajos correspondientes al
Desarrollo de aplicaciones dentro de las Dependencias, así como de proveer y difundir las políticas y
lineamientos que deberán observarse para la creación de Sistemas de calidad, compatibles e integrales.
Diagnosticar y proveer herramientas a través de la planificación, análisis, desarrollo e implementación de
sistemas de información
Identificar las necesidades de desarrollo de Sistemas de Información propias de cada dependencia, así
como coordinar los trabajos para su realización y puesta en marcha.
La Ingeniería de Software es una disciplina de la Ingeniería que concierne a todos los aspectos de la
producción de software. Los Ingenieros de Software adoptan un enfoque sistemático para llevar a cabo
COMPUTACIÓN E INFORMÁTICA 4
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
su trabajo y utilizan las herramientas y técnicas necesarias para resolver el problema planteado, de
acuerdo a las restricciones de desarrollo y recursos disponibles.
Los encargados de desarrollar software pueden instalar (o modificar) y después instalar software
comprado a terceros o escribir programas diseñados a la medida del solicitante. La elección depende del
costo de cada alternativa, del tiempo disponible para escribir el software y de la disponibilidad de los
programadores.
Por regla general los programadores (o analistas programadores) que trabajan las grandes organizaciones
pertenecen a un grupo permanente de profesionales.
En empresas pequeñas, donde no hay programadores, se pueden contratar servicios externos de
programación.
Los programadores también son responsables de la documentación de los programas y de proporcionar
una explicación de cómo y por qué ciertos procedimientos se codifican en determinada forma.
La documentación es esencial para probar el programa y llevar a cabo el mantenimiento de una vez que
la aplicación se encuentre instalada.
Los programadores también son responsables de documentar el programa e incluir los comentarios que
expliquen tanto cómo y por qué se utilizó cierto procedimiento conforma se codifico de cierta forma.
La documentación es esencial para probar el programa y darle mantenimiento una vez que la aplicación
se ha puesto en marcha
Durante la prueba, el sistema se utiliza en forma experimental para asegurar que el software no falle; es
decir, que corra de acuerdo a sus especificaciones y a la manera que los usuarios esperan que lo haga. Se
examinan datos especiales de prueba en la entrada del procesamiento y los resultados para localizar
algunos problemas inesperados.
Puede permitirse también a un grupo limitado de usuarios que utilice el sistema, de manera que los
analistas puedan captar si tratan de utilizarlo en forma no planeadas. Es preferible detectar cualquier
anomalía antes de que la empresa ponga en marcha el sistema y dependa de él.
En muchas compañías la prueba se lleva a cabo por personas diferentes a aquellos que los escriben en
forma original; es decir si se utilizan personas que no conocen como se diseñaron ciertas partes de los
programas, se asegura una mayor y más completa prueba, además de ser imparcial, lo que da a un
software más confiable.
En el desarrollo de un software se necesita lenguaje de programación, entonces ¿Qué es un lenguaje de
programación? Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas
que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el
comportamiento físico y lógico de una máquina. Por ejemplo Visual Basic
En Visual Basic se llevan a cabo ejemplos de cómo crear o diseñar un programa llamado proyecto con
distintos formularios.
Cada formulario contiene un código (subrutinas) éstas permiten llevar a cabo las acciones. Un
desarrollador de software necesita de un lenguaje de programación para llevar a cabo su programa, el
cual lleva a cabo funciones específicas.
En la ingeniería del software el término fases de desarrollo expresa cómo ha progresado el desarrollo de
un software y cuánto desarrollo puede requerir. Cada versión importante de un producto pasa
generalmente a través de una etapa en la que se agregan las nuevas características (etapa alfa), después
una etapa donde se eliminan errores activamente (etapa beta), y finalmente una etapa en donde se han
quitado todos los bugs importantes (etapa estable). Las etapas intermedias pueden también ser
reconocidas.
Las etapas se pueden anunciar y regular formalmente por los desarrolladores del producto, pero los
términos se utilizan a veces de manera informal para describir el estado de un producto. Normalmente
muchas compañías usan nombres en clave para las versiones antes del lanzamiento de un producto,
aunque el producto y las características reales son raramente secretas.
HERRAMIENTAS PARA EL DESARROLLO DE SISTEMAS.
Estas herramientas nos ayudan como analistas a trasladar diseños en aplicaciones funcionales.
Herramientas para Ingeniería de Software. Apoyan el Proceso de formular diseños de Software,
incluyendo procedimientos y controles, así como la documentación correspondiente.
Generadores de Códigos. Producen el código fuente y las aplicaciones a partir de especificaciones
funcionales bien articuladas.
Herramientas para Pruebas. Apoyan la fase de la evaluación de un Sistema o departes del mismo contra
las especificaciones. Incluyen facilidades para examinar la correcta operación del Sistema así como el
grado de perfección alcanzado en comparación con las expectativas.
DISEÑO DE SISTEMA.
El diseño de sistema es activado por la relación de las necesidades de la empresa obtenida
durante el análisis de sistemas.
COMPUTACIÓN E INFORMÁTICA 6
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Las etapas del Diseño del Sistema son:
1. El diseño de los datos. Trasforma el modelo de dominio de la información, creado
durante el análisis, en las estructuras de datos necesarios para implementar el Software.
2. El Diseño de la Interfaz. Describe como se comunica el Software consigo mismo, con los
sistemas que operan junto con él y con los operadores y usuarios que lo emplean.
3. El Diseño de procedimientos. El Diseño de proceso es un conjunto de pasos repetitivos
que permiten al diseñador describir todos los aspectos del Sistema a construir. A lo largo
del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones
técnicas:
El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de
análisis y debe acumular todos los requisitos implícitos que desea el cliente. Cuando se
va a diseñar un Sistema de Computadoras se debe tener presente que el proceso de un
diseño incluye, concebir y planear algo en la mente, así como hacer un dibujo, modelo o
croquis.
4. Diseño de la Salida. En este caso la salida se refiere a los resultados e informaciones
generadas por el Sistema, para la mayoría de los usuarios la salida es la única razón para
el desarrollo de un Sistema y la base de evaluación de su utilidad.
5. Diseño de Archivos. Incluye decisiones con respecto a la naturaleza y contenido del
propio archivo, como si se fuera a emplear para guardar detalles de las transacciones,
datos históricos, o información de referencia. Entre las decisiones que se toman durante
el diseño de archivos, se encuentran las siguientes:
 Los datos que deben incluirse en el formato de registros contenidos en el archivo.
 La longitud de cada registro, con base en las características de los datos que
contenga.
 La secuencia a disposición de los registros dentro del archivo (La estructura de
almacenamiento que puede ser secuencial, indexada o relativa).
6. Diseño de Base de Datos. La mayoría de los sistemas de información ya sean implantados
en sistemas de cómputos grandes o pequeños, utilizan una base de datos que pueden
abarcar varias aplicaciones, o pueden utilizar un administrador de base de datos, en caso
de que el sistema requiera varias bases de datos.
Herramientas para el Diseño de Sistemas. Apoyan el proceso de formular las características que
el sistema debe tener para satisfacer los requerimientos detectados durante las actividades del
análisis:
Herramientas de especificación. Apoyan el proceso de formular las características que debe
tener una aplicación, tales como entradas, Salidas, procesamiento y especificaciones de control.
Muchas incluyen herramientas para crear especificaciones de datos.
Herramientas para presentación. Se utilizan para describir la posición de datos, mensajes y
encabezados sobre las pantallas de las terminales, reportes y otros medios de entrada y salida.
DISEÑO DE ARQUITECTURA DE SOFTWARE.
Arquitectura es la estructura organizacional de un sistema. Una arquitectura puede ser
descompuesta recursivamente en partes que interactúan a través de interfaces, relaciones que
conectan partes, y restricciones para ensamblar partes.
Buschmann et al. (1996)10 ofrece otra definición de arquitectura de software:
Una arquitectura de software es una descripción de los subsistemas y componentes de un
sistema de software y las relaciones entre ellos. Los subsistemas y componentes son típicamente
especificados envistas diferentes para mostrar las propiedades funcionales y no funcionales
relevantes de un sistema de software.
La arquitectura de software de un sistema es un artificio. Es el resultado de una actividad de
diseño de software.
Ejemplo:
COMPUTACIÓN E INFORMÁTICA 8
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
MODELO CONCEPTUAL DEL SISTEMA.
Definición. Una parte de la investigación sobre el dominio del problema consiste en identificar
los conceptos que lo conforman. Para representar estos conceptos se va a usar un Diagrama de
Estructura Estática de UML, al que se va a llamar Modelo Conceptual.
En el Modelo Conceptual se tiene una representación de conceptos del mundo real, no de
componentes software.
Objetivo. El objetivo de la creación de un Modelo Conceptual es aumentar la comprensión del
problema. Por tanto, a la hora de incluir conceptos en el modelo, es mejor crear un modelo con
muchos conceptos que quedarse corto y olvidar algún concepto importante
Ejemplo:
Socio / Cliente
Reportes
ESPECIFICACIÓN DEL SISTEMA.
Se conoce también como definición del problema o análisis del programa. En este paso se
determinan la información inicial para la elaboración del programa. Es donde se determina qué
es lo que debe resolverse con el computador, de qué presupuestos se debe partir... en definitiva,
el planteamiento del problema.
Se requieren cinco tareas:
a. Determinación de objetivos del programa.Debe definirse claramente los problemas
particulares que deberán ser resueltos o las tareas que hay que realizar, esto nos
permitirá saber qué es lo que se pretende solucionar y nos proporcionará información útil
para el planeamiento de la solución.
b. Determinación de la salida deseada.Los datos seleccionados deben ser arreglados en una
forma ordenada para producir información. Esta salida podría ser una salida de impresión
o de presentación en el monitor.
c. Determinación de los datos de entrada. Una vez identificada la salida que se desea, se
pueden determinar los datos de entrada y la fuente de estos datos. Los datos deben ser
recolectados y analizados.
d. Determinación de los requerimientos de procesamiento. Aquí se definen las tareas de
procesamiento que deben desempeñarse para que los datos de entrada se conviertan en
una salida.
e. Documentación de las especificaciones del programa. Es importante disponer de
documentación permanente. Deben registrarse todos los datos necesarios para el
procesamiento requerido. Esto conduce al siguiente paso del diseño del programa.
ELEMENTOS DE UN SISTEMA. Los elementos de un sistema de información automatizado son:
a. El equipo computacional: es decir, el hardware necesario para que el sistema
deinformación pueda operar. Lo constituyen las computadoras y el equipo periférico que
pueden conectarse a ella.
COMPUTACIÓN E INFORMÁTICA 10
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
b. El recurso humano, que interactúa con el Sistema de Información, el cual está formado
por las personas que utilizan el sistema, alimentándolo con datos o utilizando los
resultados que genere.
c. Los datos o información fuente, que es ingresada al sistema, son todas las entradas que
este realiza para generar como resultado la información que se requiere.
Un sistema de información realiza cuatro actividades básicas: entrada, almacenamiento,
procesamiento y salida de información.
1. Entrada de Información. Es el proceso mediante el cual el Sistema de Informacióntoma
los datos que requiere para procesar la información. Las entradas pueden ser manuales
o automáticas. Las manuales son aquellas que se proporcionan en forma directa por el
usuario, mientras que las automáticas son datos o información que provienen o son
tomados de otros sistemas o módulos. Esto último se denominainterfaces automáticas.
2. Almacenamiento de información. El almacenamiento es una de las actividades o
capacidades más importantes que tiene una computadora, ya que a través de esta
propiedad el sistema puede recordar la información guardada en la sección o proceso
anterior. Esta información suele ser almacenada en estructuras de información
denominadas archivos. La unidad típica de almacenamiento son los discos magnéticos o
discos duros, los discos flexibles o disquete y los discos compactos (CD-ROM).
3. Procesamiento de Información. Es la capacidad del Sistema de Información para efectuar
cálculos de acuerdo con una secuencia de operaciones preestablecida. Estos cálculos
pueden efectuarse con datos introducidos recientemente en el sistema o bien con datos
que están almacenados. Esta característica de los sistemas permite la transformación de
datos fuente en información que puede ser utilizada para la toma de decisiones, lo que
hace posible, entre otras cosas, que un tomador de decisiones genere una proyección
financiera a partir de los datos que contiene un estado de resultados o un balance general
de un año base.
4. Salida de Información. La salida es la capacidad de un Sistema de Información para sacar
la información procesada o bien datos de entrada al exterior. Las unidades típicas de
salida son las impresoras, terminales, disquete, cintas magnéticas, la voz, los graficadores,
entre otros. Es importante aclarar que la salida de un Sistema de Información puede
constituir la entrada a otro Sistema de Información o módulo. En este caso, también
existe una interface automática de salida.
ADO.NET
Introducción.
La mayoría de las aplicaciones escritas en Visual Basic y Visual C# giran en torno a la lectura y actualización
de información de bases de datos. Para permitir la integración de datos en aplicaciones distribuidas y
escalables, Visual Studio .NET es compatible con una nueva generación de tecnología de acceso a datos:
ADO.NET.
El problema es comunicar un programa o aplicación con una base de datos y más que comunicar se
pretende que el programa o aplicación realice una serie de procesos u operaciones con la base de datos
o mejor aún con el conjunto de tablas que contiene una base de datos.
La primera nota a recordar es que una base de datos puede estar físicamente en el servidor y en algún
fólder o directorio del disco duro de dicha máquina. Otra cosilla que debemos recordar es que así como
existen servidores de páginas (Web Server), servidores de correo (Mail Server), servidores de ftp (ftp
Server),...,también existen servidores de bases de datos (DataBase Server), los más comunes son el
SqlServer de Microsoft, Oracle, MySql, y muchos más, estos servidores también pueden crear, administrar
y procesar una base de datos.
El modo de comunicación entre nuestra aplicación y la base de datos implica que ambos manejen un
lenguaje de programación común, es decir no se puede mandar una instrucción en C# .net, o en visual
Basic .net o en Basic o pascal...o en cualquier otro lenguaje, a la base de datos y además esperar que esta
última la entienda.
Para entender esto, una razón muy sencilla es que la base de datos tendría que conocer o comprender
todos los lenguajes de programación, ahora dime, no sería más fácil que exista un lenguaje común...?,
entonces para resolver este problema de comunicación es que se usa un lenguaje común de bases de
datos que tanto los lenguajes de programación existentes como las bases de datos entienden, este
lenguaje común de bases de datos es el SQL (Structured Query Languaje) o lenguaje estructurado de
consultas.
La pregunta es ahora como mandamos las instrucciones SQL a la base de datos, la respuesta es mediante
los OBJETOS ADO.NET, las cuales proporcionan acceso coherente a orígenes de datos como Microsoft SQL
Server, así como a orígenes de datos expuestos mediante OLE DB y XML.
En la actualidad ADO.NET ya es parte del .NET Framework, esto quiere decir que es, de alguna manera,
parte del sistema operativo y no más un redistribuible de 4 ó 5 MB que se necesita alojar junto al cliente
o junto al instalador de una aplicación. Esto significa que nosotros, como desarrolladores, estaremos
enfocados más al acceso a datos y a la lógica para manipular estos datos, y no tendremos porqué
preocuparnos en cómo a los clientes la librería.
La mayoría de las aplicaciones necesitan algún mecanismo de acceso a datos. Si está creando una
aplicación nueva, dispone de tres opciones excelentes para obtener acceso a los datos: ADO.NET, ADO y
OLE DB. Si necesita modificar el mecanismo de acceso a datos de una aplicación existente, debería seguir
utilizando la tecnología actual de acceso a datos de la aplicación por cuestiones de mantenimiento.
Si usted prevé que la aplicación va a tener un ciclo de vida largo, entonces debe considerar la posibilidad
de rediseñar la tecnología de acceso a datos de la aplicación y utilizar ADO.NET en aplicaciones
COMPUTACIÓN E INFORMÁTICA 12
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
administradas o ADO en aplicaciones nativas. A largo plazo, el uso de las tecnologías más modernas de
acceso a datos reduce el tiempo de desarrollo, simplifica el código y proporciona un rendimiento
excelente.
ACCESO A DATOS CON ADO.NET
 ADO.NET es una tecnología de acceso a datos que se basa en los objetos ADO (Objetos de Datos
ActiveX) anteriores.
 Es una manera nueva de acceder a los datos construida sobre ADO. ADO.NET puede coexistir con
ADO.
 También podemos decir que ADO.NET es un conjunto de clases que exponen servicios de acceso
a datos al programador de .NET.
 ADO.NET proporciona un conjunto variado de componentes para crear aplicaciones distribuidas
de uso compartido de datos. Forma parte integral de .NET Framework, y proporciona acceso a
datos relacionales, datos XML y datos de aplicaciones.
 ADO.NET es compatible con diversas necesidades de programación, incluida la creación de
clientes de bases de datos clientes y objetos empresariales de nivel medio utilizados por
aplicaciones, herramientas, lenguajes o exploradores de Internet.
 ADO.NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir
que la aplicación se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo
seleccionar registros, los carga en memoria y se desconecta del origen de datos.
 ADO.NET es un conjunto de clases que usted utiliza para acceder y manipular orígenes de datos
como por ejemplo, una base de datos en SQL Server o una planilla Excel.
 ADO.NET utiliza XML como el formato para transmitir datos desde y hacia su base de datos y su
aplicación Web.
 Hay 3 espacios de nombres que se importará en un formulario Web o formulario Windows si está
usando ADO.NET:
 System.Data.
 System.Data.SqlClient.
 System.Data.OleDb.
Espacios de nombres para datos en el .NET Framework
Entre los espacios de nombres de .NET Framework relativos a datos y XML se incluyen:
Espacio de Nombre Descripción
System.Data
Consiste en las clases que constituyen la arquitectura ADO.NET, que es el
método primario para tener acceso a los datos de las aplicaciones
administradas. La arquitectura ADO.NET permite crear componentes que
administran eficientemente datos procedentes de múltiples orígenes.
ADO.NET también proporciona las herramientas necesarias para solicitar,
actualizar y reconciliar datos en aplicaciones distribuidas.
System.Data.Common
Contiene las clases que comparten los proveedores de datos .NET
Framework. Dichos proveedores describen una colección de clases que
se utiliza para obtener acceso a un origen de datos, como una base de
datos, en el espacio administrado.
System.Xml
Clases que proporcionan funcionalidad basada en estándares para
procesar código XML.
System.Data.OleDb
Clases que componen el proveedor de datos de .NET Framework para
orígenes de datos compatibles con OLE DB. Estas clases permiten
conectarse a un origen de datos OLE DB, ejecutar comandos en el origen
y leer los resultados.
System.Data.SqlClient
Clases que conforman el proveedor de datos de .NET Framework para
SQL Server, que permite conectarse a un origen de datos SQL Server 7.0,
ejecutar comandos y leer los resultados. El espacio de nombres
System.Data.SqlClient es similar al espacio de nombres
System.Data.OleDb, pero optimizado para el acceso a SQL Server 7.0 y
versiones posteriores.
System.Data.SqlTypes
Proporciona clases para tipos de datos nativos de SQL Server. Estas clases
ofrecen una alternativa más segura y más rápida a otros tipos de datos.
System.Data.OleDb
Clases que componen el proveedor de datos de .NET Framework para
OLE DB. Estas clases permiten el acceso a orígenes de datos ODBC en el
espacio administrado.
System.Data.OracleClient
Clases que componen el proveedor de datos de .NET Framework para
Oracle. Estas clases permiten el acceso a orígenes de datos Oracle en el
espacio administrado.
Para el acceso a datos desde Visual Basic se utiliza el nuevo modelo de acceso a datos que proporciona la
plataforma .NET FrameWork: ADO.NET.
Básicamente, se implementarán a modo de ejemplo algunas aplicaciones Windows Forms que accedan a
datos utilizando la tecnología ADO.NET.
Descripción:
 Conceptos de Bases de Datos:
COMPUTACIÓN E INFORMÁTICA 14
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Terminología de las Bases de Datos:
Los siguientes términos se definen en el contexto de las bases de datos relacionales.
� Base de datos relacional:
Una base de datos relacional es un tipo de base de datos que almacena información en tablas. Las bases
de datos relacionales utilizan valores coincidentes de dos tablas para relacionar datos en una tabla con
datos de otra. En una base de datos relacional, normalmente almacenamos un tipo específico de datos
sólo una vez.
� Tabla:
Una tabla es un objeto base de datos que almacena datos en registros (filas) y campos (columnas).
Normalmente, los datos tienen relación con una categoría concreta de cosas, como empleados o pedidos.
� Registro:
Un registro es una colección de datos sobre una persona, un lugar, un evento o algún otro elemento. Los
registros son los equivalentes lógicos de filas en una tabla. Por ejemplo, un registro en la tabla Empleados
debería tener información sobre un empleado particular.
� Campo:
Un registro está compuesto de varios campos. Cada campo de un registro contiene una pieza de
información sobre el registro. Por ejemplo, el registro de un Empleado tiene campos para el ID del
empleado, Apellido, Nombre, etc.
� Clave principal:
Una clave principal identifica de modo único cada fila de una tabla. La clave principal es un campo o una
combinación de campos cuyo valor es único para cada fila (o registro) de la tabla. Por ejemplo, el campo
Employee ID es la clave primaria para la tabla Empleados. No puede haber dos empleados con el mismo
ID.
� Clave foránea:
Una clave foránea es uno o más campos (columnas) de una tabla que hacen referencia al campo o campos
de la clave principal de otra tabla. Una clave foránea indica cómo están relacionadas las tablas.
� Relación:
Una relación es una asociación establecida entre campos comunes (columnas) de dos tablas. Una relación
puede ser de uno a uno, de uno a muchos, o de muchos a muchos. Las relaciones permiten que los
resultados de las consultas incluyan datos de varias tablas. Una relación uno a uno entre una tabla Clientes
y una tabla Pedidos permitiría que una consulta devolviera todos los pedidos de un determinado cliente.
� Acceso de sólo lectura:
El acceso de sólo lectura a una base de datos significa que podemos recuperar (leer) los datos pero no
podemos modificarlos (escribir). Un archivo de sólo lectura o un documento puede visualizarse o
imprimirse pero no puede modificarse de ningún modo.
� Acceso de lectura/escritura:
El acceso de lectura/escritura a una base de datos significa que podemos recuperar (leer) los datos y
modificarlos (escribir).
Cómo funciona la Programación de Bases de Datos:
Cuando desarrollamos aplicaciones, tenemos diferentes requerimientos para trabajar con datos. En
algunos casos, simplemente desearemos mostrar datos en un formulario. En otros casos, es posible que
necesitemos crear una forma de compartir información con otra organización.
� Principales tareas de la programación de bases de datos:
COMPUTACIÓN E INFORMÁTICA 16
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Cuando trabajamos con datos, utilizamos varios objetos para recuperar y modificar información de una
base de datos. En general, cuando trabajamos con bases de datos en ADO.NET, realizamos las siguientes
tareas:
1. Conectar a una base de datos.
2. Solicitar datos específicos.
Especificar los datos que se desean recuperar y si se necesita acceso de solo lectura o de
lectura/escritura a los datos.
3. Recuperar y mostrar los datos.
4. Cerrar la conexión (en algunas aplicaciones).
5. Modificar los datos recuperados (si se dispone de acceso de lectura/escritura).
6. Volver a abrir la conexión (en algunas aplicaciones).
7. Transmitir a la base de datos los cambios realizados en los datos.
8. Cerrar la conexión.
¿Qué es SQL?
Antes de que podamos escribir una aplicación que utilice datos, necesitamos saber algo sobre el Lenguaje
de consulta estructurado (Structured Query Language, SQL). Utilizamos SQL para especificar exactamente
qué registros recuperar de una base de datos.
__________________________________________________________________________________
NOTA: SQL está definido por el estándar American National Standards Institute (ANSI). Existen
diferentes implementaciones de SQL para diferentes motores de bases de datos. Por ejemplo, existe
una versión de SQL para bases de datos Microsoft Access (Jet 4.0) y una para SQL Server.
� La instrucción SELECT:
Utilizando SQL, podemos especificar exactamente qué registros deseamos recuperar y el orden en que los
deseamos. Podemos crear una instrucción SQL que recupere información de múltiples tablas a la vez, o
podemos crear una instrucción que recupere un registro específico.
La instrucción SELECT devuelve campos específicos de una o más tablas de una base de datos. La
siguiente instrucción recupera el nombre de todos los registros de la tabla Empleados:
SELECT Nombre FROM Empleados
Para seleccionar todos los campos de la tabla, se utiliza un asterisco (*):
SELECT * FROM Empleados
Ejemplo con Visual Basic .NET:
Cuando utilizamos instrucciones SQL en Microsoft Visual Basic® .NET, debemos poner comillas en las
instrucciones, como muestra el siguiente código:
Dim sqlString As String
sqlString = "SELECT * FROM Empleados"
� Cláusula WHERE
Podemos utilizar la cláusula WHERE para limitar la selección de registros utilizando múltiples campos para
filtrar consultas. El siguiente código muestra cómo utilizar la cláusula básica WHERE para recuperar todos
los registros de la tabla Empleados cuyo apellido sea igual a “Danseglio”:
SELECT * FROM Empleados WHERE Apellido = 'Danseglio'
Existen otras formas de la cláusula WHERE que podemos utilizar para depurar más nuestras consultas,
como sigue:
 Cláusula WHERE IN
Podemos utilizar la cláusula WHERE IN para obtener todos los registros que satisfacen criterios
específicos. Por ejemplo, podemos devolver apellidos de empleados en determinados estados,
como muestra el siguiente código:
SELECT Apellido
FROM Empleados
WHERE Empleados.Estado IN ('NY','WA')
 Cláusula WHERE BETWEEN
También podemos devolver una selección de registros que se encuentren entre dos criterios
específicos. Observe el uso de signo de almohadilla (#) enmarcando las fechas en el siguiente
código:
SELECT OrderID
FROM Orders
WHERE OrderDate BETWEEN #01/01/93# AND #01/31/93#
 Cláusula WHERE LIKE
Podemos utilizar la cláusula WHERE LIKE para obtener todos los registros en los que exista una
condición concreta en un campo específico. Por ejemplo, el siguiente código muestra cómo
obtener todos los registros en los que el apellido empiece con la letra “D.”
SELECT Apellido FROM Empleados WHERE Apellido LIKE 'D%'
� Cláusula ORDER BY
Podemos utilizar la cláusula ORDER BY para obtener registros en un orden determinado. La opción ASC
indica orden ascendente. La opción DESC indica orden descendente. El siguiente código devuelve todos
los campos de la tabla Empleados y los ordena por el apellido:
SELECT * FROM Empleados ORDER BY Apellido ASC
COMPUTACIÓN E INFORMÁTICA 18
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
¿Qué es un entorno conectado?
� Introducción.
Un entorno conectado es aquel en el que un usuario o una aplicación están conectados continuamente a
una fuente de datos. Durante muchos años de la historia de la informática, el único entorno disponible
era el entorno conectado.
� Ventajas:
Un escenario conectado proporciona las siguientes ventajas:
 Un entorno conectado es más fácil de mantener.
 La concurrencia se controla más fácilmente.
 Es más probable que los datos estén más actualizados que en un escenario desconectado.
� Inconvenientes:
Un escenario conectado tiene los siguientes inconvenientes:
 Debe mantenerse una conexión de red constante.
 Un escenario conectado proporciona una escalabilidad limitada.
� Ejemplos:
He aquí algunos ejemplos en los que debe utilizarse una conexión continua:
 Una fábrica que requiere una conexión en tiempo real para controlar la salida de producción y el
almacén.
 Un agente de bolsa que requiere una conexión constante a los valores del mercado.
¿Qué es un entorno desconectado?
� Introducción. Con la llegada de Internet, los entornos desconectados se han convertido en algo habitual,
y con el creciente uso de dispositivos de mano, los escenarios desconectados se están convirtiendo en
algo casi universal. Equipos portátiles, Pocket PCs y Tablet PCs permiten utilizar aplicaciones sin conexión
a los servidores o a las bases de datos.
En numerosas situaciones, la gente no trabaja en entornos totalmente conectados o desconectados, sino
en un entorno que combina ambas opciones.
� Definición. Un entorno desconectado es aquel en el que un usuario o una aplicación no están
conectados constantemente a una fuente de datos. Las aplicaciones de Internet utilizan frecuentemente
arquitecturas desconectadas. Se abre la conexión, se recuperan los datos y la conexión se cierra. El usuario
trabaja con los datos en el navegador y la conexión vuelve a abrirse para actualizar u otras peticiones.
Los usuarios móviles que trabajan con equipos portátiles son también los usuarios principales de los
entornos desconectados. Los usuarios pueden llevarse un subconjunto de datos en un equipo
desconectado y posteriormente fusionar los cambios con el almacén de datos central.
� Ventajas. Un entorno desconectado proporciona las siguientes ventajas:
 Las conexiones se utilizan durante el menor tiempo posible, permitiendo que menos conexiones
den servicio a más usuarios.
 Un entorno desconectado mejora la escalabilidad y el rendimiento de las aplicaciones,
maximizando la disponibilidad de conexiones.
� Inconvenientes. Un entorno desconectado tiene los siguientes inconvenientes:
 Los datos no siempre están actualizados.
 Pueden producirse conflictos de cambios que deben solucionarse.
COMPUTACIÓN E INFORMÁTICA 20
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
 La transmisión de datos puede percibirse más lenta de lo que sería en entornos conectados.
� Ejemplos. He aquí algunos ejemplos en los que podría ser apropiado un entorno desconectado:
 Una aplicación que mantiene datos de clientes en un equipo portátil de un representante.
 Una aplicación que hace un seguimiento de lluvias y precipitaciones.
 Una aplicación que un granjero utiliza para contar el ganado. La aplicación está en el dispositivo
basado en Microsoft Windows CE del granjero que ejecuta Microsoft SQL Server 2000 Windows
CE Edition.
� Gestión de Actualizaciones en una Aplicación Desconectada:
En un entorno desconectado, varios usuarios pueden modificar los datos de los mismos registros al mismo
tiempo; por ello, nuestra aplicación debe gestionar conflictos en las actualizaciones de datos. Existen
varias formas para gestionarlos:
 Permitir que prevalezcan las actualizaciones más recientes.
 Permitir que prevalezcan las primeras actualizaciones realizadas.
 Escribir código en la aplicación que permita a los usuarios determinar qué cambios deberían
conservarse. Las soluciones específicas pueden variar dependiendo de los requerimientos de
negocio de una determinada aplicación.
NOTA. Si desea más información sobre la gestión de conflictos, consulte “Introducción a la
concurrencia de datos en ADO.NET” en la documentación de Microsoft Visual Studio® .NET.
COMPONENTES DE ADO.NET
Los componentes de ADO.NET han sido diseñados para separar el acceso a datos de la manipulación de
los datos. Existen dos componentes principales de ADO.NET que lo cumplen: el componente DataSet y los
proveedores de datos .NET. Los proveedores de datos .NET constan de un conjunto de componentes que
incluyen los objetos Connection, Command, DataReader y DataAdapter. Los componentes del proveedor
de datos .NET están diseñados explícitamente para la manipulación de datos desconectados.
ADO.NET y Windows Forms proporcionan componentes para el consumidor de datos que podemos
utilizar para mostrar nuestros datos. Incluyen controles como DataGrid, que pueden ser enlazados a
datos, y propiedades de enlace a datos en la mayoría de controles estándares de Windows, como los
controles TextBox, Label, ComboBox y ListBox.
El .NET Framework incluye numerosos proveedores de datos .NET, incluyendo el proveedor de datos de
.NET para SQL Server, el proveedor de datos de .NET OLE DB para SQL, y el proveedor OLE DB para
Microsoft Jet. Si necesitamos un proveedor personalizado, podemos escribir proveedores de datos .NET
para cualquier fuente de datos. En este módulo, nos centraremos en el proveedor de datos de .NET OLE
DB para SQL.
______________________________________________________________________________
NOTA. Si deseamos obtener más información sobre los proveedores de datos incluidos en .NET,
consultar “Utilizar proveedores de datos de .NET para obtener acceso a datos” en la
documentación de Visual Studio .NET.
Si deseamos obtener más información sobre la creación de proveedores personalizados, consultar
“Ejemplo de proveedor de datos de .NET, Implementación de Visual Basic” en la documentación
de Visual Studio .NET.
Objetos comunes de ADO.NET
� Introducción:
Los proveedores de datos de .NET y el espacio de nombres System.Data proporcionan los objetos
ADO.NET que utilizaremos en un escenario desconectado.
� Objetos ADO.NET:
ADO.NET proporciona un modelo de objetos común para proveedores de datos de .NET. La siguiente tabla
describe los principales objetos ADO.NET que utilizaremos en un escenario desconectado.
OBJETO DESCRIPCIÓN
Connection Establece y gestiona una conexión a una fuente de datos específica. Por ejemplo, la
clase OleDbConnection se conecta a fuentes de datos OLE DB.
Command Ejecuta un comando en una fuente de datos. Por ejemplo, la clase OleDbCommand
puede ejecutar instrucciones SQL en una fuente de datos OLE DB.
COMPUTACIÓN E INFORMÁTICA 22
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
DataSet Diseñado para acceder a datos con independencia de la fuente de datos. En
consecuencia, podemos utilizarlo con varias y diferentes fuentes de datos, con datos
XML, o para gestionar datos locales a la aplicación. El objeto DataSet contiene una
colección de uno o más objetos DataTable formados por filas y columnas de datos,
además de clave principal, clave foránea, restricciones e información de la relación
sobre los datos en los objetos DataTable.
DataReader Proporciona un flujo de datos eficaz, sólo-reenvío y de sólo-lectura desde una fuente
de datos.
DataAdapter Utiliza los objetos Connection, Command y DataReader implícitamente para poblar
un objeto DataSet y para actualizar la fuente de datos central con los cambios
efectuados en el DataSet. Por ejemplo, OleDbDataAdapter puede gestionar la
interacción entre un DataSet y una a base de datos Access.
Además de las clases principales citadas en la tabla anterior, los proveedores de datos de .NET Framework
también incluyen las que se enumeran en la tabla siguiente.
Objeto Descripción
Transaction
Permite incluir comandos en las transacciones que se realizan en el
origen de datos. La clase base para todos los objetos Transaction es
DbTransaction.
CommandBuilder
Un objeto auxiliar que genera automáticamente las propiedades de
comando de un DataAdapter o que obtiene de un procedimiento
almacenado información acerca de parámetros con la que puede rellenar
la colección Parameters de un objeto Command. La clase base para todos
los objetos CommandBuilder es DbCommandBuilder.
ConnectionStringBuilder
Un objeto auxiliar que proporciona un modo sencillo de crear y
administrar el contenido de las cadenas de conexión utilizadas por los
objetos Connection. La clase base para todos los objetos
ConnectionStringBuilder es DbConnectionStringBuilder.
Parameter
Define los parámetros de entrada, salida y valores devueltos para los
comandos y procedimientos almacenados. La clase base para todos los
objetos Parameter es DbParameter.
Exception
Se devuelve cuando se detecta un error en el origen de datos. En el caso
de que el error se detecte en el cliente, los proveedores de datos de .NET
Framework inician una excepción de .NET Framework. La clase base para
todos los objetos Exception es DbException.
Error
Expone la información relacionada con una advertencia o error devueltos
por un origen de datos.
ClientPermission
Se proporciona para los atributos de seguridad de acceso a código de los
proveedores de datos de .NET Framework. La clase base para todos los
objetos ClientPermission es DBDataPermission.
Componente u Objeto Detalle
Conjunto de datos
• DataSet
• DataTable
• DataColumm
• DataRow
• DataRelation
• Constraint
Los conjuntos de datos almacenan datos en una memoria caché
desconectada. La estructura de un conjunto de datos es similar a la de
una base de datos relacional; expone un modelo jerárquico de tablas,
filas y columnas. Además, contiene restricciones y relaciones definidas
para el conjunto de datos.
Adaptador de datos
• OleDbDataAdapter
• SqlDataAdapter
• OdbcDataAdapter
• OracleDataAdapter
• SqlDataReader
• OleDbDataReader
• OdbcDataReader
• OracleDataReader
Los adaptadores de datos son una parte integral de los proveedores
administrados por ADO.NET, que son el conjunto de objetos que se utiliza
para la comunicación entre un origen de datos y un conjunto de datos.
Esto significa leer datos de una base de datos para un conjunto de datos
y, a continuación, volver escribir en la base de datos los datos
modificados del conjunto de datos. Sin embargo, un adaptador de datos
puede trasladar datos entre cualquier origen y un conjunto de datos. Por
ejemplo, podría haber un adaptador que trasladara datos entre un
servidor Microsoft Exchange y un conjunto de datos.
Conexión de datos
• SqlConnection
• OleDbConnection
• OdbcConnection
• OracleConnection
Para trasladar datos entre un almacén de datos y una aplicación, en
primer lugar deberá tener una conexión con el almacén de datos.
Formulario Windows
Forms
Windows Forms es la nueva plataforma de desarrollo de aplicaciones
para Microsoft Windows, basada en .NET Framework. Este marco de
trabajo proporciona un conjunto de clases claro, orientado a objetos y
ampliable, que permite desarrollar complejas aplicaciones para
Windows. Además, los formularios Windows Forms pueden actuar como
interfaz de usuario local en una solución distribuida de varios niveles.
Página de Formulario
Web Forms
Las páginas de formularios Web Forms pueden usarse para crear páginas
Web programables que sirvan como interfaz de usuario de las
aplicaciones Web. Este tipo de páginas presenta la información al usuario
en cualquier explorador o dispositivo cliente e implementa lógica de
aplicación mediante el código de la parte servidor. La salida de las páginas
de formularios Web Forms puede contener casi cualquier lenguaje
compatible con HTTP, incluidos HTML, XML, WML y ECMAScript (JScript,
JavaScript).
DataSet.
El DataSet de ADO.NET está expresamente diseñado para el acceso a datos independientemente del
origen de datos. Como resultado, se puede utilizar con múltiples y distintos orígenes de datos, con datos
XML o para administrar datos locales de la aplicación. El DataSet contiene una colección de uno o más
objetos DataTable formados por filas y columnas de datos, así como información sobre claves principales,
claves externas, restricciones y relaciones relativas a los datos incluidos en los objetos DataTable.
 Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una).
Puede contener las tablas y las relaciones entre esas tablas.
 Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre,
filas, y columnas.
 Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una
cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una
cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en
memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden
ser definidos cualquier número de DataViews adicionales, reduciendo la
interacción con la base de datos subyacente y mejorando así el desempeño.
 Un DataColumn representa una columna de la tabla, incluyendo su nombre y
tipo. Un objeto DataRow representa una sola fila en la tabla, y permite leer y
actualizar los valores en esa fila, así como la recuperación de cualquier fila que
esté relacionada con ella a través de una relación de clave primaria - clave
extranjera.
COMPUTACIÓN E INFORMÁTICA 24
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
 Un DataRowView representa una sola fila de un DataView, la diferencia entre un
DataRow y el DataRowView es importante cuando se está interactuando sobre
un resultset.
 Un DataRelation es una relación entre las tablas, tales como una relación de clave
primaria – clave ajena. Esto es útil para permitir la funcionalidad del DataRow de
recuperar filas relacionadas.
 Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que
los valores en una columna de clave primaria deben ser únicos. A medida que los datos
son modificados cualquier violación que se presente causará excepciones.
Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y
Command que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML
(opcionalmente con un esquema XSD), o llenarse a sí mismo desde un XML, haciendo esto
excepcionalmente útil para los servicios Web, computación distribuida, y aplicaciones ocasionalmente
conectadas.
En el diagrama siguiente se ilustra la relación entre un proveedor de datos de .NET Framework y un
DataSet.
Arquitectura de ADO.NET.
Cómo trabajar con bases de datos en el Explorador de servidores:
� Introducción:
Podemos utilizar el Explorador de servidores para visualizar y manipular enlaces a datos, conexiones de
bases de datos, y recursos del sistema en cualquier servidor para el que tengamos acceso en red.
Utilizando el Explorador de servidores, podemos:
 Crear y abrir conexiones de datos a Microsoft Access, a servidores ejecutando Microsoft SQL
Server y a otras bases de datos.
 Iniciar sesión en servidores y mostrar sus bases de datos, tablas, campos y sus datos sin abandonar
el entorno de desarrollo ni utilizar el software de la base de datos.
 Visualizar los servicios del sistema, incluyendo el registro de sucesos, colas de mensajes,
contadores de rendimiento y otros servicios del sistema.
 Visualizar información sobre los Servicios Web XML disponibles y los métodos y esquemas que
proporcionan.
 Almacenar proyectos y referencias a bases de datos.
 Crear componentes de datos que hagan referencia al recurso de datos o monitorizar su actividad
arrastrando nodos desde el Explorador de servidores a nuestros proyectos de Visual Studio .NET.
 Interactuar con recursos de datos programando los componentes de datos creados en nuestros
proyectos de Visual Studio .NET.
� Abrir el Explorador de servidores:
Podemos abrir el Explorador de servidores en cualquier momento durante el proceso de desarrollo,
mientras trabajamos con cualquier tipo de proyecto o elemento.
 Abrir el Explorador de servidores:
 En el menú Ver, hacer clic en Explorador de servidores.
 Si la ficha Explorador de servidores se muestra en el extremo izquierdo de la pantalla, hacer
clic en esa ficha.
� Agregar y eliminar conexiones a datos:
El Explorador de servidores muestra las conexiones a bases de datos bajo el nodo Conexiones de datos.
Después de establecer una conexión, podemos diseñar programas para abrir conexiones y recuperar y
manipular los datos. De modo predeterminado, el Explorador de servidores muestra conexiones a datos
y enlaces a servidores utilizados con anterioridad.
 Agregar una conexión a datos en el Explorador de servidores:
1. En el menú Herramientas, hacer clic en Conectar con base de datos.
Se abre el cuadro de diálogo Propiedades del vínculo de datos.
2. En la ficha Proveedor del cuadro de diálogo Propiedades del vínculo de datos, seleccionar un
proveedor.
COMPUTACIÓN E INFORMÁTICA 26
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
3. En la ficha Conexión del cuadro de diálogo Propiedades del vínculo de datos, proporcionar la
información que se solicita. Los campos de entrada que se muestran pueden variar en función del
proveedor seleccionado en la ficha Proveedor.
Por ejemplo, si seleccionamos el proveedor OLE DB para SQL Server, la ficha Conexión muestra
campos para el nombre de servidor, el tipo de autenticación y la base de datos.
4. Hacer clic en Aceptar para establecer la conexión de datos.
El cuadro de diálogo Propiedades del vínculo de datos se cierra, y la nueva conexión de datos
aparece debajo del nodo Conexiones de datos, con el nombre del servidor y de la base de datos a
la que se accede. Por ejemplo, si creamos una conexión de datos a una base de datos denominada
NWind en un servidor llamado Server1, aparece una nueva conexión con el nombre
Server1.NWind.dbo bajo el nodo Conexiones de datos.
 Eliminar una conexión de datos desde el Explorador de servidores:
1. En el Explorador de servidores, expandir el nodo Conexiones de datos.
2. Seleccionar la conexión a la base de datos deseada.
3. Pulsar DELETE.
No se produce ningún efecto en la base de datos. Hemos eliminado la referencia desde nuestra
vista.
� Arrastrar y soltar recursos de datos:
Podemos arrastrar elementos desde el Explorador de servidores y soltarlos en el Diseñador de Windows
Forms. Ubicar elementos en el Diseñador de Windows Forms crea nuevos recursos de datos que están
preconfigurados para recuperar información de fuentes de datos seleccionadas.
 Crear un nuevo componente de datos utilizando el Explorador de servidores
Podemos crear un componente de datos preconfigurado para hacer referencia a un determinado recurso.
1. En la vista de Diseño, abrir el formulario al que deseamos agregar un componente de datos.
2. En el Explorador de servidores, seleccionar el elemento de datos que deseamos utilizar. Un
ejemplo de elemento de datos es un campo o una tabla.
3. Arrastrar el elemento desde el Explorador de servidores a la superficie del diseñador.
� Visualizar elementos de la base de datos:
Podemos utilizar el Explorador de servidores para visualizar y recuperar información de todas las bases
de datos instaladas en un servidor. Podemos hacer una lista de tablas, vistas, procedimientos
almacenados y funciones de la base de datos en el Explorador de servidores, expandir tablas individuales
para hacer una lista de sus columnas y disparadores, y hacer clic con el botón derecho sobre la tabla para
seleccionar el Diseñador de tablas del menú contextual.
ADO.NET y XML
� Introducción
ADO.NET está estrechamente integrado con XML. Por ello, ADO.NET facilita la conversión de datos
relacionales a formato XML. También podemos convertir datos de XML en tablas y relaciones.
� Importancia del uso de XML
XML es una forma útil y portátil de representar datos de un modo abierto e independiente de la
plataforma. Una característica importante de los datos XML es que están basados en texto. El uso de datos
basados en texto, en contraposición a pasar datos binarios como el conjunto de resultados de ADO, facilita
el intercambio de datos XML entre aplicaciones y servicios, aunque se estén ejecutando en diferentes
plataformas. XML también permite que las organizaciones intercambien datos sin necesidad de una
personalización adicional del software propietario de cada organización.
� Soporte de XML
El modelo de objetos ADO.NET incluye soporte extensivo para XML. Cuando utilice el soporte de XML en
ADO.NET, debe tener en cuenta los siguientes hechos y directrices:
 Se pueden leer datos de un DataSet en formato XML. El formato XML es útil si desea
intercambiar datos entre aplicaciones o servicios en un entorno distribuido.
 Se puede rellenar un DataSet con datos XML. Esto resulta útil si se reciben datos XML de otra
aplicación o servicio y se desea actualizar una base de datos utilizando estos datos.
 Puede crearse un esquema XML para la representación XML de los datos en un DataSet. El
esquema XML puede utilizarse para realizar tareas como serializar los datos XML a un flujo o
archivo.
 Pueden cargarse datos XML desde un flujo o un archivo a un árbol Document Object Model
(DOM). A continuación, pueden manipularse los datos como XML o como un DataSet. Para
ello, debe disponer de un esquema XML para describir la estructura de los datos para el
DataSet.
 Pueden crearse DataSets tipados. Un DataSet tipado es una subclase de DataSet, con
propiedades y métodos adicionales para tener disponible la funcionalidad de DataSet. Para
describir la representación XML del DataSet tipado, Visual Studio .NET genera una definición
equivalente del esquema XML para este DataSet.
� Ejemplo de uso de XML en una aplicación desconectada
Este ejemplo describe cómo utilizar XML en una aplicación ADO.NET desconectada. Podemos utilizar XML
para intercambiar datos entre las distintas partes del sistema del modo siguiente:
1. La aplicación cliente invoca un servicio Web XML para solicitar datos de una base de datos.
2. El servicio Web XML consulta una fuente de datos para obtener los datos solicitados.
COMPUTACIÓN E INFORMÁTICA 28
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
3. El servicio Web XML carga los resultados en un DataSet.
4. El servicio Web XML traduce los datos a formato XML y devuelve los datos XML a la aplicación
cliente.
5. La aplicación cliente procesa los datos XML de algún modo. Por ejemplo, el cliente puede cargar
los datos XML en un DataSet y enlazarlos a un control del interfaz de usuario como un DataGrid.
Cuando la aplicación cliente esté lista, invoca un servicio Web XML para actualizar la fuente de
datos con los cambios de los datos.
6. El servicio Web XML carga los nuevos datos XML en un DataSet y utiliza los nuevos datos para
actualizar la fuente de datos.
Nota. Si deseamos obtener más información sobre cómo poblar un DataSet con un flujo XML,
consultar “Clase DataSet, XML” en la documentación de Visual Studio .NET.
Si desea obtener más información sobre la obtención de datos como XML desde SQL Server, consultar
“Proveedor de datos de .NET SQL Server, XML” en la documentación de Visual Studio .NET.
Trabajar con Datos
� Introducción
ADO.NET proporciona todos los componentes necesarios para conectarnos a fuentes de datos y trabajar
con datos en nuestras aplicaciones. En esta aprenderemos a utilizar objetos ADO.NET para conectarnos a
una base de datos, recuperar modificar y transmitir datos actualizados a la base de datos. También
aprenderemos cómo mostrar datos en un formulario Windows Forms utilizando el control DataGrid.
Finalmente, aprenderemos cómo utilizar el Asistente para formularios de datos para automatizar el
proceso de trabajar con datos. El asistente simplifica la tarea de agregar controles y establecer
propiedades a unos pocos pasos sencillos.
Cómo utilizar un objeto Connection:
� Introducción
Antes de trabajar con datos, es necesario establecer primero una conexión con una fuente de datos. Para
conectar con una fuente de datos, escogemos el tipo de conexión, especificamos la fuente de datos, y
abrimos la conexión a la fuente de datos. Cuando acabamos de trabajar con los datos, cerraremos la
conexión.
� Escoger el tipo de conexión
Podemos utilizar el objeto Connection para conectar a una fuente de datos específica. Podemos utilizar
SqlConnection para conectar a bases de datos SQL Server u OleDbConnection para conectar a otros tipos
de fuentes de datos.
� Especificar la fuente de datos
Después de escoger el tipo de conexión, utilizamos una propiedad ConnectionString para especificar el
proveedor de datos, la fuente de datos, y demás información utilizada para establecer la conexión. El
formato de estas cadenas difiere ligeramente entre el espacio de nombres SqlClient y el espacio de
nombres OleDb.
� Abrir y cerrar la conexión de datos
El objeto Connection soporta un método Open que abre la conexión después de que se hayan establecido
las propiedades de la conexión, y un método Close que cierra la conexión a la base de datos después de
que todas las transacciones se hayan liberado.
� Ejemplo de SQL: El siguiente ejemplo muestra cómo utilizar un objeto Connection, la propiedad
ConnectionString y el método Open para conectarnos a una base de datos SQL Server utilizando el Data
Provider .NET de SQL Server:
Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
PubsSQLConn.Open( )
� Ejemplo de Jet 4.0: El siguiente ejemplo muestra cómo conectarnos a una base de datos Access
utilizando el Data Provider OLE DB Jet 4.0:
Dim NWindOleDbConn As OleDb.OleDbConnection
NWindOleDbConn = New OleDb.OleDbConnection( )
NWindOleDbConn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.MDB"
NWindOleDbConn.Open( )
Cómo utilizar un objeto DataAdapter:
COMPUTACIÓN E INFORMÁTICA 30
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
� Introducción:
Tras establecer una conexión con una fuente de datos, podemos utilizar un adaptador de datos para
intercambiar datos entre la fuente de datos y un dataset. En muchas aplicaciones, esto significa leer datos
de una base de datos en un dataset mediante un adaptador de datos y a continuación escribir los datos
cambiados desde el dataset al adaptador de datos y nuevamente a la base de datos. Sin embargo, un
adaptador de datos puede mover datos entre cualquier fuente y un dataset. Por ejemplo, podría existir
un adaptador que mueva datos entre un servidor que ejecute Microsoft Exchange y un dataset.
� Tipos de adaptadores de datos:
Visual Studio incorpora dos adaptadores de datos principales para utilizarse con bases de datos:
 OleDbDataAdapter es apropiado para utilizarlo con cualquier fuente de datos que proporcione
un proveedor OLE DB.
 SqlDataAdapter es específico a SQL Server. Como no funciona a través de una capa OLE DB, es
más rápido que OleDbDataAdapter. Sin embargo, sólo puede ser utilizado con SQL Server versión
7.0 o superior.
� Creación del DataAdapter:
Podemos instanciar el DataAdapter utilizando la palabra clave Dim y pasando una cadena de consulta y
un objeto Connection como parámetros. El DataAdapter verificará si la Connection está abierta, y si no
lo está, la abrirá para nosotros y la cerrará cuando nuestra llamada al método se complete. Esta
aproximación es útil si ya hemos establecido las propiedades de un objeto Connection en nuestra
aplicación y sólo necesitamos abrir la conexión para poblar las tablas de datos.
� Ejemplos:
Los siguientes ejemplos muestran cómo crear una instancia de una clase Sql Client DataAdapter. El
código para crear una instancia de la clase DataAdapter se muestra en negrita.
� Ejemplo de SQL:
El siguiente ejemplo muestra cómo acceder a la tabla Titles en la base de datos Pubs:
Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _
("Select * from Titles", PubsSQLConn)
' Code to populate the dataset
Dim titlesDataset As DataSet = New DataSet
PubsAdapter.Fill(titlesDataset)
' Code to bind the dataset to form controls might go here
� Ejemplo de Jet 4.0:
El siguiente ejemplo muestra cómo acceder a la tabla Customers en la base de datos Northwind utilizando
el OLE DB Provider para Microsoft Jet:
Private NWindOleDbConn as OleDb.OleDbConnection
Private Sub Form1_Load(...) Handles MyBase.Load
NWindOleDbConn = New OleDb.OleDbConnection( )
NWindOleDbConn.ConnectionString = "Provider= " & _
"Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.mdb"
Dim NWindAdapter As New OleDb.OleDbDataAdapter _
("Select * from Customers", NWindOleDbConn)
' Code to populate the DataSet might go here
' Code to bind the DataSet to form controls might go here
� Métodos clave:
DataAdapter soporta métodos específicos para mover datos entre el dataset y la fuente de datos.
Podemos utilizar un adaptador de datos para realizar las siguientes operaciones:
 Recuperar filas de una fuente de datos y poblarlas en tablas de datos correspondientes en un
dataset.
Para recuperar filas de una fuente de datos y poblar un dataset, utilizar el método Fill de
SqlDataAdapter u OleDbDataAdapter. Cuando invocamos el método, se invoca una sentencia
SQL SELECT en la fuente de datos. Ejecutar este método abrirá y cerrará el objeto de conexión.
 Transmitir los cambios realizados a una tabla dataset a la fuente de datos correspondiente.
Para transmitir los cambios en una tabla dataset a la fuente de datos, utilizar el método Update
del adaptador. Cuando invocamos el método, ejecuta cualquier sentencia SQL INSERT, UPDATE o
DELETE que sea necesaria, dependiendo de si el registro afectado es nuevo, modificado o borrado.
Ejecutar este método abrirá y cerrará el objeto conexión.
�Ejemplo: ' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
PubsAdapter.Update (PubsDataSet)
� Ejemplo de Jet 4.0: ' Create the Connection, the DataAdapter, and the DataSet,
' and populate the dataset
COMPUTACIÓN E INFORMÁTICA 32
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Dim NWindConn As OleDb.OleDbConnection
NWindConn = New OleDb.OleDbConnection( )
NWindConn.ConnectionString = "Provider= " & _
"Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.mdb"
Dim NWindAdapt As New OleDb.OleDbDataAdapter("SELECT * " & _
"from Customers", NWindConn)
Dim NWindDataSet As DataSet = New DataSet( )
NWindAdapt.Fill(NWindDataSet, "customersTable")
' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
NWindAdapt.Update (NWindDataSet.Tables("customersTable"))
Cómo utilizar un objeto DataSet:
� Introducción:
Después de especificar los datos que queremos recuperar, el próximo paso es poblar un dataset con datos
desde la base de datos. Los datasets almacenan datos en un caché desconectado. La estructura de un
dataset es similar a la de una base de datos relacional y ofrece un modelo de objetos jerárquico de tablas,
filas y columnas. Además, contiene restricciones y relaciones que están definidas para el dataset.
� Poblar datasets:
Un dataset es un contenedor, de modo que necesitamos poblarlo con datos. Podemos poblar un dataset
de varios modos:
 Invocar el método Fill de un adaptador de datos. Llamando este método hace que el adaptador
ejecute una sentencia SQL o un procedimiento almacenado y pueble una tabla en el dataset con
los resultados. Si el dataset contiene múltiples tablas, probablemente tendremos adaptadores de
datos separados para cada tabla, y por tanto deberemos llamar a cada método Fill de cada
adaptador por separado.
 Poblar tablas manualmente en el dataset creando DataRows y añadirlas a la colección Rows de
la tabla. Podemos hacer esto sólo en tiempo de ejecución. No podemos establecer la colección
Rows en tiempo de diseño.
 Leer un documento XML o flujo en el dataset.
 Copiar los contenidos de otro dataset. Esta técnica puede ser útil si nuestra aplicación obtiene
datasets de diferentes fuentes (diferentes Servicios Web XML, por ejemplo), pero necesita
consolidarlos en un único dataset.
� Ejemplo:
Utilizamos un DataAdapter para acceder a datos almacenados en una base de datos y almacenar los datos
en DataTables dentro de un DataSet e nuestra aplicación.
� Ejemplo de SQL:
Las sentencias en negrita del siguiente ejemplo muestran cómo poblar un Dataset denominado
PubsDataset con datos de una base de datos SQL utilizando un DataAdapter. Sólo hay una tabla y el
dataset hará referencia a ella utilizando un número de índice. El comando Update utliza la misma tabla
para actualizar los cambios a la base de datos.
' Create the Connection, the DataAdapter, and the DataSet,
' and populate the dataset
Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _
("Select * from Authors", PubsSQLConn)
Dim PubsDataSet As DataSet = New DataSet( )
PubsAdapter.Fill(PubsDataSet)
' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
PubsAdapter.Update (PubsDataSet.Tables("authorsTable"))
� Ejemplo de Jet 4.0: Las sentencias en negrita del siguiente ejemplo muestran cómo poblar un
DataSet llamado NWindDataSet con datos desde una base de datos OLE DB utilizando un DataAdapter.
' Create the Connection, the DataAdapter, and the DataSet,
' and populate the dataset:
Dim NWindConn As OleDb.OleDbConnection
NWindConn = New OleDb.OleDbConnection( )
NWindConn.ConnectionString = "Provider= " & _
"Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.mdb"
Dim NWindAdapt As New OleDb.OleDbDataAdapter("SELECT * " & _
"from Customers", NWindConn)
COMPUTACIÓN E INFORMÁTICA 34
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Dim NWindDataSet As DataSet = New DataSet( )
NWindAdapt.Fill(NWindDataSet)
' Code to manipulate the data locally by using the DataSet
' goes here
' Update the database by means of the data adapter
NWindConn.Open( )
NWindAdapt.Update (NWindDataSet)
NWindConn.Close( )
Cómo utilizar un control DataGrid:
� Introducción:
Después de poblar un dataset, podemos visualizar y modificar datos utilizando el control DataGrid de
Windows Forms. DataGrid muestra datos en una serie de filas y columnas. El caso más simple es cuando
la rejilla se enlaza con una fuente de datos que contiene una única tabla sin relaciones. En ese caso, los
datos aparecen simplemente en filas y columnas, como en una hoja de cálculo.
� Cómo funciona el control DataGrid:
Si el DataGrid se enlaza a datos con múltiples tablas relacionadas y si se activa la navegación en la rejilla,
éste visualizará expansores en cada fila. Un expansor permite la navegación desde una tabla padre a una
hija. Haciendo clic en un nodo se muestra la tabla hija y haciendo clic en el botón Atrás muestra la tabla
padre original. En este modo, la rejilla muestra las relaciones jerárquicas entre tablas.
DataGrid puede proporcionar un interfaz de usuario para un dataset, navegación entre tablas
relacionadas y ricas capacidades de formateo y edición.
La visualización y manipulación de datos son funciones separadas: el control gestiona el interfaz de
usuario, mientras que las actualizaciones de datos las gestiona la arquitectura de enlace de datos de
Windows Forms y por los proveedores de datos ADO.NET. Por tanto, múltiples controles enlazados a la
misma fuente de datos permanecerán sincronizados.
� Enlace de datos al control:
Para que el control DataGrid funcione, debemos enlazarlo con una fuente de datos utilizando las
propiedades DataSource y DataMember en tiempo de diseño o el método SetDataBinding en tiempo de
ejecución. Este enlace vincula el DataGrid a un objeto de fuente de datos instanciado (como un DataSet
o DataTable) y el control DataGrid se actualiza con los resultados de acciones realizadas sobre los datos.
La mayoría de acciones específicas de datos no son realizadas por el DataGrid. Se realiza por medio de la
fuente de datos.
 Para enlazar el control DataGrid a una única tabla en el diseñador
1. Establecer la propiedad del control DataSource al objeto que contiene los elementos de datos a
los que queremos enlazar.
2. Si la fuente de datos es un dataset, establecer la propiedad DataMember al nombre de la tabla
con la que queremos enlazar.
3. Si la fuente de datos es un dataset o una vista de datos basada en una tabla de un dataset, añadir
código al formulario para poblar el dataset.
� Enlace simple:
Utilizamos enlace simple para vincular un control a un simple campo en un DataSet. Por ejemplo,
podríamos usar enlace simple para un control TextBox o Label. Utilizando la propiedad DataBindings de
un control con capacidad de vinculación a datos, podemos especificar qué DataSet y qué campo enlazar
con qué propiedad.
� Ejemplo de SQL:
El siguiente ejemplo muestra cómo enlazar datos a un control TextBox:
Dim PubsSQLConn As SqlClient.SqlConnection
PubsSQLConn = New SqlClient.SqlConnection( )
PubsSQLConn.ConnectionString = "Integrated Security=True;" & _
"Data Source=local;Initial Catalog=Pubs;"
PubsSQLConn.Open( )
Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _
("Select * from Titles", PubsSQLConn)
Dim PubsDataSet As DataSet = New DataSet( )
PubsAdapter.Fill(PubsDataSet)
TextBox1.DataBindings.Add(New Binding("Text", _
PubsDataSet, "Authors.FirstName"))
� Ejemplo de Jet 4.0:
El código TextBox no difiere de cuando utilizamos un Jet 4.0. Sólo el código de Connection y DataAdapter,
como muestran los ejemplos anteriores.
� Enlace complejo:
Utilizamos enlace complejo para enlazar un control a múltiples campos en un DataSet. Por ejemplo,
utilizamos enlace complejo para un control DataGrid. Utilizando la propiedad DataSource de estos
controles, podemos especificar la tabla a utilizar.
� Ejemplo de Jet 4.0:
COMPUTACIÓN E INFORMÁTICA 36
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
El siguiente ejemplo muestra cómo utilizar la propiedad DataSource de un control DataGrid para una base
de datos Jet 4.0. El código que establece la propiedad está formateado en negrita.
Dim NWindOleDbConn As OleDb.OleDbConnection = _
New OleDb.OleDbConnection( )
Dim NWindAdapter As New OleDb.OleDbDataAdapter _
("Select * from Customers", NWindOleDbConn)
Dim NWindDataSet As DataSet = New DataSet( )
NWindOleDbConn.ConnectionString = "Provider= " & _
"Microsoft.Jet.OLEDB.4.0;datasource=c:NWind.mdb"
NWindOleDbConn.Open( )
NWindAdapter.Fill(NWindDataSet)
DataGrid1.DataSource = NWindDataSet
DataGrid1.DataMember = "Customers"
� Ejemplo de SQL: El código TextBox no difiere de cuando utilizamos un proveedor SQL. Sólo el código de
Connection y DataAdapter, como muestran los ejemplos anteriores.
Cómo utilizar el Asistente para formularios de datos:
� Introducción:
El Asistente para formularios de datos nos ayuda a crear una aplicación Windows Forms con controles
enlazados a datos. Los controles muestran datos desde cualquier fuente de datos que especifiquemos.
� Ejecución del Asistente para formularios de datos:
Ejecutar el Asistente para formularios de datos es como añadir un elemento a un proyecto existente.
 Para ejecutar el Asistente para formularios de datos
1. Crear o abrir una aplicación Windows Forms.
Nota. El asistente puede crear un formulario únicamente en un tipo de proyecto que soporte
formularios.
2. Desde el menú Archivo, hacer clic en Agregar nuevo elemento.
Aparece el cuadro de diálogo Agregar nuevo elemento.
3. En el panel Plantillas, hacer clic en Asistente para formularios de datos.
4. Poner un nombre en el formulario de datos y hacer clic en Abrir.
Se inicia el asistente.
5. Seguir los pasos del asistente.
� Qué hace el asistente:
El Asistente para formularios de datos nos guía a través del proceso completo de crear un formulario
enlazado a datos. Cuando hayamos finalizado, tendremos:
 Un formulario Windows Form.
 Controles enlazados a datos en el formulario.
 Todos los componentes de datos necesarios para el formulario.
 Métodos que podemos invocar para leer y, para Windows Forms, escribir datos.
� El formulario y controles:
Para visualizar datos, el formulario generado por el asistente incluye controles que están enlazados a una
fuente de datos. Por ejemplo, el formulario puede contener un control de rejilla.
En un formulario Windows Forms, podemos seleccionar entre una rejilla o controles específicos que
muestren un registro cada vez. Podemos también generar botones que permitan a los usuarios navegar
entre registros e incluir botones para guardar los cambios a los registros y añadir nuevos.
� Elementos de datos:
El Asistente para formularios de datos puede crear nuevos componentes de datos o utilizar componentes
que estén disponibles en nuestro proyecto. Un componente de datos para el formulario está formado por
varios elementos discretos:
 Una conexión a una fuente de datos, como una base de datos.
 Un adaptador de datos que referencia una sentencia SQL o procedimiento almacenado para
obtener datos.
 Un dataset tipado contiene los registros recuperados de la base de datos. El dataset incluye un
esquema, un archivo de clase dataset y una instancia del dataset en el formulario.
Si utilizamos el asistente para crear una fuente de datos, conectará nuestra aplicación a la base de datos
especificada. Dentro de la base de datos, el asistente puede acceder a tablas o vistas.
El asistente puede opcionalmente crear y utilizar una referencia a un Servicio Web XML como la fuente
de datos. En ese escenario, se asume que el Servicio Web XML es capaz de devolver un dataset.
Podemos utilizar el asistente para acceder a múltiples tablas y establecer relaciones entre ellas. En este
caso, los controles en el formulario nos permiten visualizar tanto registros padre como hijos.
� Métodos Fill y Update:
Una de las tareas que necesitamos realizar es rellenar el dataset con datos de la base de datos. Por
defecto, para rellenar el dataset, el asistente genera un botón Load que invoca el código que realiza la
operación de llenado. Si estamos creando un nuevo dataset con el asistente, éste genera el método Fill
automáticamente. Si estamos trabajando con un dataset existente, el asistente nos ofrece estas opciones
para crear un método Fill:
 Seleccionar un método existente
Si nuestro proyecto proporciona un método que devuelve un dataset (tanto como valor de
retorno de una función o como un parámetro), podemos seleccionar ese método y el asistente
genera código para invocar ese método.
COMPUTACIÓN E INFORMÁTICA 38
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
 Obviar el método
Seleccione esta opción si queremos rellenar el dataset por nosotros mismos en lugar de que el
código de llenado se invoque automáticamente.
Si estamos generando un formulario Windows Form, el asistente también puede generar un método
Update que podemos invocar para enviar cambios desde el dataset de retorno a la fuente de datos.
� Pasos adicionales:
Cuando el asistente finaliza y tenemos un nuevo formulario, éste está listo para ejecutarse. Hay algunos
pocos pasos adicionales que podemos desear realizar y una variedad de modos en los que puede ampliar
lo que el asistente ha realizado.
Por ejemplo, para trabajar con el formulario que acabamos de crear, necesitamos establecer el formulario
como el formulario de inicio para que podamos probarlo.
 Para establecer el formulario de inicio en Windows Forms
1. En el Explorador de soluciones, hacer clic con el botón derecho en el proyecto, y a continuación
hacer clic en Propiedades.
La página de propiedades del Proyecto se abre con las propiedades General visualizadas.
2. Seleccionar el formulario que queremos que sea el formulario de inicio desde la lista de Objeto
inicial.
El asistente crea controles, elementos de datos y todo el código necesario para ejecutar el
formulario. Podemos leer y modificar este código si es necesario. Podemos querer realizar las
siguientes tareas para mejorar el formulario que crea el asistente:
 Cambiar el aspecto y disposición de los controles en el formulario.
 Si no queremos utilizar el botón Load para rellenar el dataset, podemos mover el código de
llenado a otra ubicación. Un ejemplo típico es moverlo desde el procesador de eventos del botón
al método de inicialización del formulario de modo que el dataset se rellena automáticamente
cuando el formulario se ejecuta.
 Refinar las consultas que el asistente genera para que el adaptador de datos recupere un
subconjunto de los datos y que añada o modifique parámetros a los comandos del adaptador.
 Añadir validación o lógica de negocio al formulario.
 Añadir lógica de navegación para prevenir que ocurran excepciones cuando nos movemos más
allá del primer y último registro.
Acceder a datos con DataReaders:
El beneficio de utilizar un DataSet es que nos ofrece una vista desconectada de la base de datos. Para
aplicaciones de larga ejecución, es a menudo el mejor método. Sin embargo, los desarrolladores de
aplicaciones Web generalmente realizan operaciones cortas y sencillas con cada petición, como visualizar
datos. Para estas breves operaciones, generalmente no es eficiente mantener un objeto DataSet. En tales
casos, podemos utilizar un DataReader.
Seleccionar entre un DataReader y un DataSet
Al decidir si nuestra aplicación debería utilizar un DataReader o un DataSet, consideremos el tipo de
funcionalidad que nuestra aplicación requiere. Usar un DataSet cuando necesitemos realizar alguna de
las siguientes acciones:
 Transmitir datos entre niveles o desde un Servicio Web XML.
 Interactuar dinámicamente con datos, como cuando enlazamos a un control Windows Forms o
combinamos y relacionamos datos desde múltiples fuentes.
 Almacenar localmente datos en caché para nuestra aplicación.
 Proporcionar una vista jerárquica XML de datos relacionales y utilizar herramientas como
Transformaciones XSL o una consulta XML Path Language (XPath) Query sobre nuestros datos.
Si deseamos obtener más información, consultar “XML and the DataSet” en la documentación del
.NET Framework SDK.
 Realizar procesamiento intensivo sobre datos que no requiera una conexión abierta a la fuente
de datos, dejando la conexión disponible a otros clientes.
Si no necesitamos la funcionalidad que proporciona la clase DataSet, podemos mejorar el
rendimiento de nuestra aplicación utilizando la clase DataReader para devolver nuestros datos
de modo sólo-lectura/sólo-reenvío. Aunque la clase DataAdapter utiliza un DataReader para
rellenar los contenidos de un DataSet, utilizando la clase DataReader en su lugar podemos
asegurar los siguientes beneficios de rendimiento:
 La memoria que sería consumida por el DataSet estará de este modo disponible.
 El procesamiento que sería requerido para crear y rellenar los contenidos del DataSet en este
caso no será necesario.
En esta sección, aprenderemos cómo leer datos desde una fuente de datos utilizando DataReaders.
Crear un DataReader:
COMPUTACIÓN E INFORMÁTICA 40
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Para minimizar la dificultad de tales situaciones, el DataReader ha sido diseñado para producir un flujo
sólo-lectura, sólo-reenvío que se devuelve desde la base de datos. Únicamente un registro a la vez está
siempre en memoria. Hay dos clases DataReader: SqlDataReader y OleDbDataReader.
Un DataReader mantiene la conexión abierta hasta que se cierra el DataReader.
Para utilizar un SqlDataReader, declarar un SqlCommand en vez de un SqlDataAdapter. El SqlCommand
expone un método ExecuteReader que toma un SqlDataReader como parámetro. Observar que cuando
utilizamos un SQLCommand, debemos explícitamente abrir y cerrar SqlConnection.
Dim mySqlConnection As New -
SqlConnection("server=(local)NetSDK; -
Trusted_Connection=yes;database=northwind")
mySqlConnection.Open()
Dim mySqlCommand As New SqlCommand( -
"select * from customers", mySqlConnection)
Dim myReader As SqlDataReader = mySqlCommand.ExecuteReader()
'...
If Not (myReader Is Nothing) Then
myReader.Close()
End If
If mySqlConnection.State = ConnectionState.Open Then
mySqlConnection.Close()
End If
� Gestión de errores con un DataReader:
Cuando utilizamos conexiones con el objeto DataReader, siempre deberíamos utilizar un bloque
Try/Finally para garantizar que, si se lanza alguna excepción, las conexiones se cerrarán.
Dim myReader As SqlDataReader = Nothing
Dim mySqlConnection As New -
SqlConnection("server=(local)NetSDK; -
Trusted_Connection=yes;database=northwind")
Dim mySqlCommand As New SqlCommand( -
"select * from customers", mySqlConnection)
Try
mySqlConnection.Open()
myReader = mySqlCommand.ExecuteReader()
Catch e As Exception
Console.WriteLine(e.ToString())
Finally
If Not (myReader Is Nothing) Then
myReader.Close()
End If
If mySqlConnection.State = ConnectionState.Open Then
mySqlConnection.Close()
End If
End Try
Leer datos de un DataReader:
Una vez que hemos invocado el método ExecuteReader del objeto Command, accedemos a un registro en
el DataReader invocando el método Read. La posición inicial en el DataReader se sitúa antes del primer
registro; por tanto, debemos invocar a Read antes de acceder a cualquier dato. Cuando no hay más
registros disponibles, el método Read devuelve False.
� Leer campos desde el registro actual:
Para recuperar datos desde campos en el registro actual, podemos llamar un método Get (por ejemplo:
GetDateTime, GetDouble, GetInt32 o GetString).
El parámetro del método Get es el valor ordinal del campo que queremos leer. Por ejemplo, el siguiente
código lee los campos CustomerID y CompanyName desde el registro actual del DataReader utilizando
el método GetString:
Dim customerID As String = myReader.GetString(0)
Dim companyName As String = myReader.GetString(1)
Podemos también referenciar los campos de datos en el registro actual del DataReader por nombre y a
continuación llamar a una función de conversión apropiada, como se muestra en el siguiente ejemplo de
código:
Dim customerID As String = myReader("CustomerID").ToString()
Dim companyName As String = myReader("CompanyName").ToString()
COMPUTACIÓN E INFORMÁTICA 42
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
� Recorrer todos los registros:
Para recorrer todos los registros y mostrarlos por la consola en un DataReader, podemos utilizar un bucle
While, como se muestra en el siguiente código de ejemplo:
While myReader.Read()
Console.Write(myReader("CustomerID").ToString() + _
" ")
Console.WriteLine(myReader("CompanyName").ToString())
End While
� Cerrar el DataReader:
Mientras que el DataReader está en uso, la conexión asociada está ocupada sirviendo el DataReader. Por
tanto, debemos llamar a Close para cerrar el DataReader cuando hayamos acabado de utilizarlo.
If Not (myReader Is Nothing) Then
myReader.Close()
End If
If mySqlConnection.State = ConnectionState.Open Then
mySqlConnection.Close()
End If
Uso de DataSets frente a DataReaders:
El procedimiento general para acceder a bases de datos desde ASP.NET varía, dependiendo de si
utilizamos un DataSet o un DataReader:
Usando DataSets Usando DataReaders
1. Conectar a la base de datos utilizando
SqlConnection u OleDbConnection.
1. Conectar a la base de datos utilizando
SqlConnection u OleDbConnection.
2. Almacenar la consulta de la base de datos en un
SqlDataAdapter o en un OleDbDataAdapter.
2. Abrir la conexión con el método Open.
3. Poblar un DataSet desde el DataAdapter
utilizando Fill.
3. Almacenar la consulta de la base de datos en
objetos SqlCommand u OleDbCommand.
4. Crear una nueva DataView para la tabla
deseada.
4. Poblar un DataReader desde el Command
utilizando el método ExecuteReader.
5. Enlazar un control servidor, como el DataGrid al
DataView.
5. Invocar los métodos Read y Get del
DataReader para leer datos.
6. Visualizar manualmente los datos.
7. Cerrar el DataReader y la conexión.
RESUMEN
Para el acceso a datos desde Visual Basic se utiliza el nuevo modelo de acceso a datos que proporciona la
plataforma .NET FrameWork : ADO.NET.
Basicamente, se implementarán a modo de ejemplo algunas aplicaciones Windows Forms que accedan a
datos utilizando la tecnología ADO.NET.
Podriamos definir ADO.NET como:
 Un conjunto de interfaces, clases y estructuras que permiten el acceso a datos desde la
plataforma .NET de Microsoft.
 Una evolución del API ADO de Microsoft.
 Permite un modo de acceso a datos desconectado. Esto quiere decir que, a través de ADO.NET,
sólo estaremos conectados al servidor el tiempo estrictamente necesario para realizar la carga de
los datos en el DataSet.
Acceso Desconectado:
Mediante el acceso desconectado que proporciona la plataforma .NET a través de ADO.NET, reduciremos
el número de conexiones aumentando la capacidad de carga de trabajo de nuestro servidor ya que se
soportarán una mayor cantidad de usuarios por unidad de tiempo.
Normalmente, cuando se recoge información de una Base de Datos es con el propósito de realizar algún
tipo de proceso con ella: mostrarla por pantalla, procesarla o enviarla a algún componente. Con
frecuencia, no sólo necesitaremos una sola fila, sino un conjunto de ella. Y también será frecuente que
necesitemos información que se encuentre en más de una tabla (join de tablas). Lo que hará la aplicación
entonces será cargarlos y tratarlos como un bloque compacto. En un modelo desconectado, sería ilógico
tener que conectar cada vez que queramos avanzar al registro siguiente para recoger la información de
dicho registro. Así, lo que se hace para solucionar ese inconveniente es almacenar temporalmente toda
la información necesaria para poder trabajar posteriormente con ella. Esto es lo que representa un objeto
DataSet en el modelo ADO.NET.
COMPUTACIÓN E INFORMÁTICA 44
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
Un objeto DataSet es una caché de registros recuperados de una Base de Datos que puede llegar a
contener más de una tabla, basadas éstas en tablas reales de la Base de Datos. Será importante saber que
los DataSet son almacenes estáticos. Es decir, no se “enterarán” de los cambios realizados en la Base de
Datos real, hasta que no se hayan recargado dichos datos. Por lo que será necesario hacerlo si queremos
“estar al dia”.
En definitiva, un objeto DataSe es capaz de almacenar toda una Base de Datos lógica y siempre con
independencia del fabricante que la diseño, lo que da una gran flexibilidad de trabajo al modelo ADO.NET
de Microsoft.
Espacio de nombres System.Data:
Dentro del espacio de nombres System.Data nos encontramos con las siguientes clases, que son el eje
central de ADO.NET:
 DataSet: Almacén de datos de ADO.NET. Representa una Base de Datos desconectada del
proveedor de datos. Capaz de almacenar datos y relaciones.
 DataTable: Un contenedor de datos. Estructurado como un conjunto de filas (DataRow) y de
columnas (DataColumn).
 DataRow: Registro que almacena x valores. Representación de una fila/tupla de una Bases de
Datos en ADO.NET.
 DataColumn: Contiene la definición de una columna de una Base de Datos.
Espacios de nombres System.Data.Client y Sistem.Data.OleDb:
 SqlCommand / OleDbCommand: Clases que representan un comando de SQL contra un SGBD.
 SqlConnection / OleDbConnection: Clases que representan la etapa de conexión a un SGBD.
 SqlCommandBuilder / OleDbCommandBuilder: Generador de comandos SQL de inserción,
modificación y borrado de una consulta de SQL.
 SqlDataReader / OleDbDataReader: Un lector de datos de sólo avance, conectado a la Base de
Datos
 SqlDataAdapter / OleDbDataAdapter: Clase adaptadora entre un objeto DataSet y sus
operaciones en la Base de Datos.
Las Clases Connection:
En los ejemplos que se han utilizado, se ha empleado Microsoft SQL Server 2000 como SGBD, ya que ha
sido uno de los SGBD vistos en clase.
El primer paso en un acceso a datos consiste en establecer una conexión con la Base de Datos. Esta
operación la llevaremos a cabo gracias a las clases Connection de ADO.NET, que permiten conectar a un
origen de datos.
En ADO.NET existen dos implementaciones para algunos de los objetos, cada uno específico del origen de
datos al que vayamos a conectar. En este caso, somo queremos conectar con Microsoft SQL Server lo
haremos a través de la clase System.Data.SqlClient.SqlConnection. Si quisieramos hacerlo con un
proveedor de datos OLEDB, lo hariamos a través de la clase System.Data.OleDb.OleDbConnection.
Utilizaremos los métodos Open() y Close() para conectar y desconectar de la Base de Datos,
respectivamente.
El constructor de la clase Connection que empleemos (SqlConnection o OleDbConnection) recibirá como
parámetro la cadena de conexión que se aplique a su propiedad ConnectionString.
Veamos un ejemplo de código que conecta y desconecta de un SGBD:
Imports System.Data.SqlClient
Try
'Crea el objeto Conexión
Dim conexion As New SqlConnection()
'Pasa la cadena de conexión
conexion.ConnectionString = “server=(local);” & _ integrated
security=sspi;“database=ejemplo;uid=sa;pwd=;”
'Conecta con la Base de Datos
conexion.Open()
MessageBox.Show(“¡Conectado!”)
'Desconecta de la Base de Datos
conexion.Close()
MessageBox.Show(“¡Desconectado!”)
Catch excepcion As SqlException
'Se puede producir algún error durante al conectar o durante la conexión
MessageBox.Show(“Error al conectar con la Base de Datos”)
End Try
Las clases Command:
Una vez que hemos establecido la conexión con el SGBD, la siguiente operación que normalmente
querremos llevar a cabo será la de enviarle sentencias para realizar diferentes operaciones con los datos.
Las clases Command de ADO.NET son las que nos permitirán llevar a cabo tales operaciones.
Un objeto Command nos va a permitir ejecutar una sentencia SQL sobre la fuente de datos con la que
hemos conectado. También podremos obtener un cojunto de resultados. En este caso, esos datos pasarán
a otros tipos de objetos como DataReader o DataAdapter.
Los objetos Command se deben crear a partir de la conexión que ya se ha establecido y contendrá una
sentencia a SQL a ejecutar sobre dicha conexión.
Entre sus propiedades más comunes se encuentran las siguientes:
 CommandText : Contiene la cadena de texto que representa la sentencia SQL que se ejecutará
sobre la fuente de datos.
Entre sus métodos más comunes se encuentran los siguientes:
 ExecuteNonQuery : Ejecuta la sentencia SQL contenida en la propiedad CommandText del objeto
Command. En este caso la sentencia que se ejecuta debe ser una sentencia de un tipo que no
devuelva resultado alguno (UPDATE, DELETE, INSERT).
COMPUTACIÓN E INFORMÁTICA 46
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015
 ExecuteReader : Ejecuta la sentencia SQL contenida en la propiedad CommandText del objeto
Command. En este caso si que se devolverán resultados. El resultado devuelto será un objeto de
tipo DataReader
(SqlDataReader/OleDbDataReader) que nos permitirá leer y recorrer los datos devueltos por la
sentencia SQL.
 ExecuteScalar : Utilizada cuando sólo queremos obtener el dato de la primera columna de la
primera fila. El resto de datos no se tienen en cuenta. Muy útil cuando queremos recoger la
resultado, por ejemplo, de un COUNT(*) ya que este método devuelve un tipo de dato Object
como resultado.
Veamos un par de ejemplos:
Inserción sobre una tabla
' Cadena de conexión
Dim conexion As New SqlConnection()
conexion.ConnectionString = “server=(local)” & _ “integrated
security=sspi;database=ejemplo;uid=sa;pwd=;”
' Crea la sentencia SQL
Dim sentencia As String
sentencia = “INSERT INTO Alumnos VALUES (123, “Pablo”,”Neruda”,'23/12/1996”)
' Crea el comando SQL
Dim comando As New SqlCommand(sentencia, conexion)
Dim resultados As Integer
' Conecta con la Base de Datos
conexion.Open()
' Ejecuta la sentencia SQL (NonQuery ya que es una ' ' ' inserción). Sólo
devuelve el número de filas afectadas
resultados = comando.ExecuteNonQuery()
' Desconecta de la Base de Datos
conexion.Close()
MessageBox.Show(“Se han añadido “ & resultados & “ filas”)
Consulta sobre una tabla
'Cadena de conexión
Dim conexion As New SqlConnection()
conexion.ConnectionString = “server=(local);integrated security=sspi;” &
“database=ejemplo;uid=sa;pwd=;”
'Crea la sentencia SQL
Dim sentencia As String
sentencia = “SELECT COUNT(*) FROM Alumnos”)
' Crea el comando SQL
Dim comando As New SqlCommand(sentencia, conexion)
Dim resultados As Integer
'Conecta con la Base de Datos
conexion.Open()
'Ejecuta la sentencia SQL (NonQuery ya que es una ' ' ' inserción). Sólo
devuelve el número de filas afectadas
resultados = comando.ExecuteScalar()
'Desconecta de la Base de Datos
conexion.Close()
MessageBox.Show(“Hay “ & resultados & “ alumnos.”)
Las clases DataReader:
Un objeto DataReader permite la navegación hacia delante y de sólo lectura de los registros devueltos
por una consulta.
A diferencia de los objetos que trabajan en modo desconectado comentados anteriormente, este objeto
permanece conectado durante todo el tiempo que se esté trabajando con él.
Para obtener un objeto DataReader tendremos que ejecutar un método ExecuteReader() de un objeto
Command basado en una consulta SQL.
Estas son sus propiedades más comunes:
 FieldCount : Devuelve el número de columnas de la fila actual.
 IsClosed : Indica si está (True) o no cerrado (False) el objeto DataReader.
Y sus métodos más comunes:
 Close(): Cierra el objeto DataReader liberando los recursos.
 Read(): Desplaza el cursor actual al siguiente registro permitiendo obtener los valores del mismo
a través del objeto DataReader. Además, devolverá True si quedan más elementos dentro del
objeto DataReader y False si hemos llegado al final del conjunto de registros. La posición inicial
de un objeto DataReader es justo antes del primer registro por lo que lo primero que deberemos
hacer será realizar una llamada a este método para empezar a obtener valores.
Veamos un ejemplo:
'Crea la conexión
Dim conexion As New SqlConnection()
conexion.ConnectionString = “server=(local); integrated security=sspi;
database=ejemplo;uid=sa;pwd;”
'Crea el comando
Dim comando As New SqlCommand(“SELECT * FROM Alumnos”, conexion)
'Crea el DataReader
Dim lectorDatos As SqlDataReader
'Conecta con la Base de Datos
conexion.Open()
lectorDatos = comando.ExecuteReader()
'Recorre las filas devueltas en el DataReader y los muestra en un ListBox
While lectorDatos.Read()
Me.listaAlumnos.Items.Add(lectorDatos(“Nombre”))
End While
'Cierra el objeto DataReader
lectorDatos.Close()
'Desconecta de la Base de Datos
conexion.Close()
La Clase DataSet:
DataSet es el almacén de datos por excelencia de ADO.NET.
Taller de Programación Distribuida
Taller de Programación Distribuida
Taller de Programación Distribuida

Más contenido relacionado

La actualidad más candente

Metodología de desarrollo de software (45 Preguntas)
Metodología de desarrollo de software (45 Preguntas)Metodología de desarrollo de software (45 Preguntas)
Metodología de desarrollo de software (45 Preguntas)LeonardoAguantaRodrg
 
Contrato de Desarrollo de Software
Contrato de Desarrollo de SoftwareContrato de Desarrollo de Software
Contrato de Desarrollo de SoftwareGlobal Negotiator
 
MAPA CONCEPTUAL SISTEMA DE ARRANQUE
MAPA CONCEPTUAL SISTEMA DE ARRANQUEMAPA CONCEPTUAL SISTEMA DE ARRANQUE
MAPA CONCEPTUAL SISTEMA DE ARRANQUEDavid A Tello ORE
 
Preguntas seguridad informática
Preguntas seguridad informáticaPreguntas seguridad informática
Preguntas seguridad informáticamorfouz
 
Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)asegundos
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-softwareMiguel Angel Rodriguez
 
Proyecto de analisis y diseño
Proyecto de analisis y diseñoProyecto de analisis y diseño
Proyecto de analisis y diseñodreyco3030
 
SRS Ejemplo, Sistema Tarifado de Transito
SRS Ejemplo, Sistema Tarifado de TransitoSRS Ejemplo, Sistema Tarifado de Transito
SRS Ejemplo, Sistema Tarifado de TransitoJuan Jose Lucero
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de softwaremonik1002
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAngel Reyes
 
Mecanismos de seguridad informática
Mecanismos de seguridad informáticaMecanismos de seguridad informática
Mecanismos de seguridad informáticaJean Carlos Leon Vega
 
Ingenieria de requerimientos
Ingenieria de requerimientosIngenieria de requerimientos
Ingenieria de requerimientosTensor
 

La actualidad más candente (20)

Proyecto de-mantenimiento
Proyecto de-mantenimientoProyecto de-mantenimiento
Proyecto de-mantenimiento
 
Metodología de desarrollo de software (45 Preguntas)
Metodología de desarrollo de software (45 Preguntas)Metodología de desarrollo de software (45 Preguntas)
Metodología de desarrollo de software (45 Preguntas)
 
Contrato de Desarrollo de Software
Contrato de Desarrollo de SoftwareContrato de Desarrollo de Software
Contrato de Desarrollo de Software
 
MAPA CONCEPTUAL SISTEMA DE ARRANQUE
MAPA CONCEPTUAL SISTEMA DE ARRANQUEMAPA CONCEPTUAL SISTEMA DE ARRANQUE
MAPA CONCEPTUAL SISTEMA DE ARRANQUE
 
Comparticion de recursos- Sistemas Distribuidos
Comparticion de recursos- Sistemas Distribuidos Comparticion de recursos- Sistemas Distribuidos
Comparticion de recursos- Sistemas Distribuidos
 
Preguntas seguridad informática
Preguntas seguridad informáticaPreguntas seguridad informática
Preguntas seguridad informática
 
Manual De Instalación De Windows 10.
Manual De Instalación De Windows 10.Manual De Instalación De Windows 10.
Manual De Instalación De Windows 10.
 
Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)Aplicaciones móviles (diapositivas)
Aplicaciones móviles (diapositivas)
 
Navegadores web
Navegadores webNavegadores web
Navegadores web
 
51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software51036806 proyecto-ejemplo-ingenieria-de-software
51036806 proyecto-ejemplo-ingenieria-de-software
 
Trabajo software libre
Trabajo software libreTrabajo software libre
Trabajo software libre
 
Arquitectura fisica y logica
Arquitectura fisica y logicaArquitectura fisica y logica
Arquitectura fisica y logica
 
Proyecto de analisis y diseño
Proyecto de analisis y diseñoProyecto de analisis y diseño
Proyecto de analisis y diseño
 
SRS Ejemplo, Sistema Tarifado de Transito
SRS Ejemplo, Sistema Tarifado de TransitoSRS Ejemplo, Sistema Tarifado de Transito
SRS Ejemplo, Sistema Tarifado de Transito
 
Proyecto de software
Proyecto de softwareProyecto de software
Proyecto de software
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de software
 
Mecanismos de seguridad informática
Mecanismos de seguridad informáticaMecanismos de seguridad informática
Mecanismos de seguridad informática
 
Ingenieria de requerimientos
Ingenieria de requerimientosIngenieria de requerimientos
Ingenieria de requerimientos
 
Sistemas operativos power point
Sistemas operativos power pointSistemas operativos power point
Sistemas operativos power point
 
Estimación de Proyectos de Software
Estimación de Proyectos de SoftwareEstimación de Proyectos de Software
Estimación de Proyectos de Software
 

Similar a Taller de Programación Distribuida

Perfil del ingeniero de software
Perfil del ingeniero de softwarePerfil del ingeniero de software
Perfil del ingeniero de softwareJorge Reyes
 
Fundamentos de ingenieria de software
Fundamentos de ingenieria de softwareFundamentos de ingenieria de software
Fundamentos de ingenieria de softwareITSPR
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicionEvelin Oña
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobarEdwin Alexander
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremichellchia11
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1Jose Garcia
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremarianela0393
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareJahiro Bojorquez
 
Definición de ingeniería del software
Definición de ingeniería del softwareDefinición de ingeniería del software
Definición de ingeniería del softwarehdfkjshdkf
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del softwareDaniel Merchan
 
Fases de desarrollo de un programa...
Fases de desarrollo de un programa... Fases de desarrollo de un programa...
Fases de desarrollo de un programa... grachika
 

Similar a Taller de Programación Distribuida (20)

Jose r ojas ii
Jose r ojas iiJose r ojas ii
Jose r ojas ii
 
Perfil del ingeniero de software
Perfil del ingeniero de softwarePerfil del ingeniero de software
Perfil del ingeniero de software
 
Fundamentos de ingenieria de software
Fundamentos de ingenieria de softwareFundamentos de ingenieria de software
Fundamentos de ingenieria de software
 
Trabajo 2 exposicion
Trabajo 2 exposicionTrabajo 2 exposicion
Trabajo 2 exposicion
 
Edwin alexande mata escobar
Edwin alexande mata escobarEdwin alexande mata escobar
Edwin alexande mata escobar
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Siste deinf
Siste deinfSiste deinf
Siste deinf
 
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1Sanchez garcia juan jose  definiciones en la ingeniería de software sis4-1
Sanchez garcia juan jose definiciones en la ingeniería de software sis4-1
 
ingenieriadesoftware1
ingenieriadesoftware1ingenieriadesoftware1
ingenieriadesoftware1
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Software
SoftwareSoftware
Software
 
Unidad 1 Ingenieria de software
Unidad 1 Ingenieria de softwareUnidad 1 Ingenieria de software
Unidad 1 Ingenieria de software
 
Tarea 3 fundamentos del computador
Tarea 3 fundamentos del computador Tarea 3 fundamentos del computador
Tarea 3 fundamentos del computador
 
Definición de ingeniería del software
Definición de ingeniería del softwareDefinición de ingeniería del software
Definición de ingeniería del software
 
Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)
 
XXXS
XXXSXXXS
XXXS
 
Tarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computadorTarea 2 de fundamentos del computador
Tarea 2 de fundamentos del computador
 
13. ingeniería del software
13. ingeniería del software13. ingeniería del software
13. ingeniería del software
 
Fases de desarrollo de un programa...
Fases de desarrollo de un programa... Fases de desarrollo de un programa...
Fases de desarrollo de un programa...
 
Inf 162
Inf 162Inf 162
Inf 162
 

Más de Gilber Basilio Robles

Más de Gilber Basilio Robles (8)

Herramientas del sistema
Herramientas del sistemaHerramientas del sistema
Herramientas del sistema
 
Procesador de textos
Procesador de textosProcesador de textos
Procesador de textos
 
Introducion redes de comunicacion
Introducion redes de comunicacionIntroducion redes de comunicacion
Introducion redes de comunicacion
 
LA EDUCACIÓN EN DIVERSAS EDADES
LA EDUCACIÓN EN DIVERSAS EDADESLA EDUCACIÓN EN DIVERSAS EDADES
LA EDUCACIÓN EN DIVERSAS EDADES
 
Didactica en el Uso de Recursos Informaticos
Didactica en el Uso de Recursos InformaticosDidactica en el Uso de Recursos Informaticos
Didactica en el Uso de Recursos Informaticos
 
Geografia y Economia de la Provincia Daniel Carrión
Geografia y Economia de la Provincia Daniel CarriónGeografia y Economia de la Provincia Daniel Carrión
Geografia y Economia de la Provincia Daniel Carrión
 
Tutorial slideshare
Tutorial slideshareTutorial slideshare
Tutorial slideshare
 
Resumen - Trastornos del Aprendizaje
Resumen - Trastornos del AprendizajeResumen - Trastornos del Aprendizaje
Resumen - Trastornos del Aprendizaje
 

Último

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 

Último (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 

Taller de Programación Distribuida

  • 1.
  • 2. COMPUTACIÓN E INFORMÁTICA 2 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 DEFINICIÓN DE TÉRMINOS BÁSICOS  PROGRAMACIÓN. Es un proceso para convertir especificaciones generales de un sistema en instrucciones utilizables por la máquina, que produzcan los resultados deseados. Se le conoce también como desarrollo de software.  PROGRAMA. Es una lista de instrucciones que la computadora debe seguir para procesar datos y convertirlos en información. Las instrucciones se componen de enunciados usados en lenguajes de programación.  LENGUAJE DE PROGRAMACIÓN. Es un conjunto de símbolos junto a un conjunto de reglas para combinar dichos símbolos que se usan para expresar programas. Constan de un léxico, una sintaxis y una semántica. ¿Qué conoces tú por léxico, sintaxis y semántica? LÉXICO: Conjunto de símbolos permitidos o vocabulario SINTAXIS: Reglas que indican cómo realizar las construcciones del lenguaje SEMÁNTICA: Reglas que permiten determinar el significado de cualquier construcción del lenguaje.  ANÁLISIS DE SISTEMAS. Es el proceso de clasificación e interpretación de hechos, diagnostico de problemas y empleo de la información para recomendar mejoras al sistema.  AUTOMATIZACIÓN. Sustitución de habilidades humanas por operaciones automáticas de máquinas.  ANALISTA. Profesional de la computación que se dedica a planificar y analizar todos los procesos necesarios para solucionar un problema determinado o realizar una aplicación deseada mediante una computadora.  ARCHIVOS. Conjuntos de datos almacenados según rasgo común a todos ellos.  BASE DE DATOS. Conjunto de ficheros de datos organizados según método que facilita la actualización, acceso y recuperación de información contenida en ellos.  CICLO DE VIDA PARA EL DESARROLLO DE SISTEMA. Consiste en el desarrollo de sistema por etapas, que forman el ciclo de desarrollo de sistema. Cada etapa del ciclo se desarrolla para soporte a las etapas sucesivas, es decir, que no pueden ser desarrolladas de forma aislada e independiente.  DATOS. Materia prima empleada para crear información útil.
  • 3.  DESARROLLO DE SISTEMA. Consiste en la creación de paquetes de software para satisfacerlas necesidades de una organización específica y de sus usuarios.  DISEÑO DE SISTEMAS. Es el proceso de planificar, reemplazar o complementar un sistema organizacional existente.  DOCUMENTACIÓN. Es una actividad que consiste en registrar los hechos y las especificaciones de un sistema.  HARDWARE. Sistema formado por el equipo computacional, es decir, por las partes físicas de la computadora”. Incluye la unidad central de proceso, memoria principal, y los dispositivos periféricos.  IMPLEMENTACIÓN DE SISTEMA. Es el proceso de verificar e instalar nuevos equipos, entrenar a los usuarios, instalar la aplicación y construir todos los archivos de datos necesarios para la utilización del mismo.  INTERFAZ DE USUARIO. Es la especificación de una conversación entre el usuario del sistema y el ordenador.  PROGRAMACIÓN ORIENTADA A OBJETOS. Consiste en crear componentes de una aplicación independientes que respondan a las acciones del usuario, al sistema y que se puedan reutilizar fácilmente.  SISTEMA. Es el conjunto de programas que interrelacionados entre sí satisfacen las necesidades de la información. DESARROLLO DE SOFTWARE. Consiste en la creación de paquetes de software para satisfacerlas necesidades de una organización específica y de sus usuarios. El Grupo de Desarrollo de Software es el encargado de coordinar los trabajos correspondientes al Desarrollo de aplicaciones dentro de las Dependencias, así como de proveer y difundir las políticas y lineamientos que deberán observarse para la creación de Sistemas de calidad, compatibles e integrales. Diagnosticar y proveer herramientas a través de la planificación, análisis, desarrollo e implementación de sistemas de información Identificar las necesidades de desarrollo de Sistemas de Información propias de cada dependencia, así como coordinar los trabajos para su realización y puesta en marcha. La Ingeniería de Software es una disciplina de la Ingeniería que concierne a todos los aspectos de la producción de software. Los Ingenieros de Software adoptan un enfoque sistemático para llevar a cabo
  • 4. COMPUTACIÓN E INFORMÁTICA 4 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 su trabajo y utilizan las herramientas y técnicas necesarias para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y recursos disponibles. Los encargados de desarrollar software pueden instalar (o modificar) y después instalar software comprado a terceros o escribir programas diseñados a la medida del solicitante. La elección depende del costo de cada alternativa, del tiempo disponible para escribir el software y de la disponibilidad de los programadores. Por regla general los programadores (o analistas programadores) que trabajan las grandes organizaciones pertenecen a un grupo permanente de profesionales. En empresas pequeñas, donde no hay programadores, se pueden contratar servicios externos de programación. Los programadores también son responsables de la documentación de los programas y de proporcionar una explicación de cómo y por qué ciertos procedimientos se codifican en determinada forma. La documentación es esencial para probar el programa y llevar a cabo el mantenimiento de una vez que la aplicación se encuentre instalada. Los programadores también son responsables de documentar el programa e incluir los comentarios que expliquen tanto cómo y por qué se utilizó cierto procedimiento conforma se codifico de cierta forma. La documentación es esencial para probar el programa y darle mantenimiento una vez que la aplicación se ha puesto en marcha Durante la prueba, el sistema se utiliza en forma experimental para asegurar que el software no falle; es decir, que corra de acuerdo a sus especificaciones y a la manera que los usuarios esperan que lo haga. Se examinan datos especiales de prueba en la entrada del procesamiento y los resultados para localizar algunos problemas inesperados. Puede permitirse también a un grupo limitado de usuarios que utilice el sistema, de manera que los analistas puedan captar si tratan de utilizarlo en forma no planeadas. Es preferible detectar cualquier anomalía antes de que la empresa ponga en marcha el sistema y dependa de él. En muchas compañías la prueba se lleva a cabo por personas diferentes a aquellos que los escriben en forma original; es decir si se utilizan personas que no conocen como se diseñaron ciertas partes de los programas, se asegura una mayor y más completa prueba, además de ser imparcial, lo que da a un software más confiable.
  • 5. En el desarrollo de un software se necesita lenguaje de programación, entonces ¿Qué es un lenguaje de programación? Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina. Por ejemplo Visual Basic En Visual Basic se llevan a cabo ejemplos de cómo crear o diseñar un programa llamado proyecto con distintos formularios. Cada formulario contiene un código (subrutinas) éstas permiten llevar a cabo las acciones. Un desarrollador de software necesita de un lenguaje de programación para llevar a cabo su programa, el cual lleva a cabo funciones específicas. En la ingeniería del software el término fases de desarrollo expresa cómo ha progresado el desarrollo de un software y cuánto desarrollo puede requerir. Cada versión importante de un producto pasa generalmente a través de una etapa en la que se agregan las nuevas características (etapa alfa), después una etapa donde se eliminan errores activamente (etapa beta), y finalmente una etapa en donde se han quitado todos los bugs importantes (etapa estable). Las etapas intermedias pueden también ser reconocidas. Las etapas se pueden anunciar y regular formalmente por los desarrolladores del producto, pero los términos se utilizan a veces de manera informal para describir el estado de un producto. Normalmente muchas compañías usan nombres en clave para las versiones antes del lanzamiento de un producto, aunque el producto y las características reales son raramente secretas. HERRAMIENTAS PARA EL DESARROLLO DE SISTEMAS. Estas herramientas nos ayudan como analistas a trasladar diseños en aplicaciones funcionales. Herramientas para Ingeniería de Software. Apoyan el Proceso de formular diseños de Software, incluyendo procedimientos y controles, así como la documentación correspondiente. Generadores de Códigos. Producen el código fuente y las aplicaciones a partir de especificaciones funcionales bien articuladas. Herramientas para Pruebas. Apoyan la fase de la evaluación de un Sistema o departes del mismo contra las especificaciones. Incluyen facilidades para examinar la correcta operación del Sistema así como el grado de perfección alcanzado en comparación con las expectativas. DISEÑO DE SISTEMA. El diseño de sistema es activado por la relación de las necesidades de la empresa obtenida durante el análisis de sistemas.
  • 6. COMPUTACIÓN E INFORMÁTICA 6 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Las etapas del Diseño del Sistema son: 1. El diseño de los datos. Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar el Software. 2. El Diseño de la Interfaz. Describe como se comunica el Software consigo mismo, con los sistemas que operan junto con él y con los operadores y usuarios que lo emplean. 3. El Diseño de procedimientos. El Diseño de proceso es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del Sistema a construir. A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas: El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que desea el cliente. Cuando se va a diseñar un Sistema de Computadoras se debe tener presente que el proceso de un diseño incluye, concebir y planear algo en la mente, así como hacer un dibujo, modelo o croquis. 4. Diseño de la Salida. En este caso la salida se refiere a los resultados e informaciones generadas por el Sistema, para la mayoría de los usuarios la salida es la única razón para el desarrollo de un Sistema y la base de evaluación de su utilidad. 5. Diseño de Archivos. Incluye decisiones con respecto a la naturaleza y contenido del propio archivo, como si se fuera a emplear para guardar detalles de las transacciones, datos históricos, o información de referencia. Entre las decisiones que se toman durante el diseño de archivos, se encuentran las siguientes:  Los datos que deben incluirse en el formato de registros contenidos en el archivo.  La longitud de cada registro, con base en las características de los datos que contenga.  La secuencia a disposición de los registros dentro del archivo (La estructura de almacenamiento que puede ser secuencial, indexada o relativa). 6. Diseño de Base de Datos. La mayoría de los sistemas de información ya sean implantados en sistemas de cómputos grandes o pequeños, utilizan una base de datos que pueden abarcar varias aplicaciones, o pueden utilizar un administrador de base de datos, en caso de que el sistema requiera varias bases de datos.
  • 7. Herramientas para el Diseño de Sistemas. Apoyan el proceso de formular las características que el sistema debe tener para satisfacer los requerimientos detectados durante las actividades del análisis: Herramientas de especificación. Apoyan el proceso de formular las características que debe tener una aplicación, tales como entradas, Salidas, procesamiento y especificaciones de control. Muchas incluyen herramientas para crear especificaciones de datos. Herramientas para presentación. Se utilizan para describir la posición de datos, mensajes y encabezados sobre las pantallas de las terminales, reportes y otros medios de entrada y salida. DISEÑO DE ARQUITECTURA DE SOFTWARE. Arquitectura es la estructura organizacional de un sistema. Una arquitectura puede ser descompuesta recursivamente en partes que interactúan a través de interfaces, relaciones que conectan partes, y restricciones para ensamblar partes. Buschmann et al. (1996)10 ofrece otra definición de arquitectura de software: Una arquitectura de software es una descripción de los subsistemas y componentes de un sistema de software y las relaciones entre ellos. Los subsistemas y componentes son típicamente especificados envistas diferentes para mostrar las propiedades funcionales y no funcionales relevantes de un sistema de software. La arquitectura de software de un sistema es un artificio. Es el resultado de una actividad de diseño de software. Ejemplo:
  • 8. COMPUTACIÓN E INFORMÁTICA 8 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 MODELO CONCEPTUAL DEL SISTEMA. Definición. Una parte de la investigación sobre el dominio del problema consiste en identificar los conceptos que lo conforman. Para representar estos conceptos se va a usar un Diagrama de Estructura Estática de UML, al que se va a llamar Modelo Conceptual. En el Modelo Conceptual se tiene una representación de conceptos del mundo real, no de componentes software. Objetivo. El objetivo de la creación de un Modelo Conceptual es aumentar la comprensión del problema. Por tanto, a la hora de incluir conceptos en el modelo, es mejor crear un modelo con muchos conceptos que quedarse corto y olvidar algún concepto importante Ejemplo: Socio / Cliente Reportes
  • 9. ESPECIFICACIÓN DEL SISTEMA. Se conoce también como definición del problema o análisis del programa. En este paso se determinan la información inicial para la elaboración del programa. Es donde se determina qué es lo que debe resolverse con el computador, de qué presupuestos se debe partir... en definitiva, el planteamiento del problema. Se requieren cinco tareas: a. Determinación de objetivos del programa.Debe definirse claramente los problemas particulares que deberán ser resueltos o las tareas que hay que realizar, esto nos permitirá saber qué es lo que se pretende solucionar y nos proporcionará información útil para el planeamiento de la solución. b. Determinación de la salida deseada.Los datos seleccionados deben ser arreglados en una forma ordenada para producir información. Esta salida podría ser una salida de impresión o de presentación en el monitor. c. Determinación de los datos de entrada. Una vez identificada la salida que se desea, se pueden determinar los datos de entrada y la fuente de estos datos. Los datos deben ser recolectados y analizados. d. Determinación de los requerimientos de procesamiento. Aquí se definen las tareas de procesamiento que deben desempeñarse para que los datos de entrada se conviertan en una salida. e. Documentación de las especificaciones del programa. Es importante disponer de documentación permanente. Deben registrarse todos los datos necesarios para el procesamiento requerido. Esto conduce al siguiente paso del diseño del programa. ELEMENTOS DE UN SISTEMA. Los elementos de un sistema de información automatizado son: a. El equipo computacional: es decir, el hardware necesario para que el sistema deinformación pueda operar. Lo constituyen las computadoras y el equipo periférico que pueden conectarse a ella.
  • 10. COMPUTACIÓN E INFORMÁTICA 10 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 b. El recurso humano, que interactúa con el Sistema de Información, el cual está formado por las personas que utilizan el sistema, alimentándolo con datos o utilizando los resultados que genere. c. Los datos o información fuente, que es ingresada al sistema, son todas las entradas que este realiza para generar como resultado la información que se requiere. Un sistema de información realiza cuatro actividades básicas: entrada, almacenamiento, procesamiento y salida de información. 1. Entrada de Información. Es el proceso mediante el cual el Sistema de Informacióntoma los datos que requiere para procesar la información. Las entradas pueden ser manuales o automáticas. Las manuales son aquellas que se proporcionan en forma directa por el usuario, mientras que las automáticas son datos o información que provienen o son tomados de otros sistemas o módulos. Esto último se denominainterfaces automáticas. 2. Almacenamiento de información. El almacenamiento es una de las actividades o capacidades más importantes que tiene una computadora, ya que a través de esta propiedad el sistema puede recordar la información guardada en la sección o proceso anterior. Esta información suele ser almacenada en estructuras de información denominadas archivos. La unidad típica de almacenamiento son los discos magnéticos o discos duros, los discos flexibles o disquete y los discos compactos (CD-ROM). 3. Procesamiento de Información. Es la capacidad del Sistema de Información para efectuar cálculos de acuerdo con una secuencia de operaciones preestablecida. Estos cálculos pueden efectuarse con datos introducidos recientemente en el sistema o bien con datos que están almacenados. Esta característica de los sistemas permite la transformación de datos fuente en información que puede ser utilizada para la toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones genere una proyección financiera a partir de los datos que contiene un estado de resultados o un balance general de un año base. 4. Salida de Información. La salida es la capacidad de un Sistema de Información para sacar la información procesada o bien datos de entrada al exterior. Las unidades típicas de
  • 11. salida son las impresoras, terminales, disquete, cintas magnéticas, la voz, los graficadores, entre otros. Es importante aclarar que la salida de un Sistema de Información puede constituir la entrada a otro Sistema de Información o módulo. En este caso, también existe una interface automática de salida. ADO.NET Introducción. La mayoría de las aplicaciones escritas en Visual Basic y Visual C# giran en torno a la lectura y actualización de información de bases de datos. Para permitir la integración de datos en aplicaciones distribuidas y escalables, Visual Studio .NET es compatible con una nueva generación de tecnología de acceso a datos: ADO.NET. El problema es comunicar un programa o aplicación con una base de datos y más que comunicar se pretende que el programa o aplicación realice una serie de procesos u operaciones con la base de datos o mejor aún con el conjunto de tablas que contiene una base de datos. La primera nota a recordar es que una base de datos puede estar físicamente en el servidor y en algún fólder o directorio del disco duro de dicha máquina. Otra cosilla que debemos recordar es que así como existen servidores de páginas (Web Server), servidores de correo (Mail Server), servidores de ftp (ftp Server),...,también existen servidores de bases de datos (DataBase Server), los más comunes son el SqlServer de Microsoft, Oracle, MySql, y muchos más, estos servidores también pueden crear, administrar y procesar una base de datos. El modo de comunicación entre nuestra aplicación y la base de datos implica que ambos manejen un lenguaje de programación común, es decir no se puede mandar una instrucción en C# .net, o en visual Basic .net o en Basic o pascal...o en cualquier otro lenguaje, a la base de datos y además esperar que esta última la entienda. Para entender esto, una razón muy sencilla es que la base de datos tendría que conocer o comprender todos los lenguajes de programación, ahora dime, no sería más fácil que exista un lenguaje común...?, entonces para resolver este problema de comunicación es que se usa un lenguaje común de bases de datos que tanto los lenguajes de programación existentes como las bases de datos entienden, este lenguaje común de bases de datos es el SQL (Structured Query Languaje) o lenguaje estructurado de consultas. La pregunta es ahora como mandamos las instrucciones SQL a la base de datos, la respuesta es mediante los OBJETOS ADO.NET, las cuales proporcionan acceso coherente a orígenes de datos como Microsoft SQL Server, así como a orígenes de datos expuestos mediante OLE DB y XML. En la actualidad ADO.NET ya es parte del .NET Framework, esto quiere decir que es, de alguna manera, parte del sistema operativo y no más un redistribuible de 4 ó 5 MB que se necesita alojar junto al cliente o junto al instalador de una aplicación. Esto significa que nosotros, como desarrolladores, estaremos enfocados más al acceso a datos y a la lógica para manipular estos datos, y no tendremos porqué preocuparnos en cómo a los clientes la librería. La mayoría de las aplicaciones necesitan algún mecanismo de acceso a datos. Si está creando una aplicación nueva, dispone de tres opciones excelentes para obtener acceso a los datos: ADO.NET, ADO y OLE DB. Si necesita modificar el mecanismo de acceso a datos de una aplicación existente, debería seguir utilizando la tecnología actual de acceso a datos de la aplicación por cuestiones de mantenimiento. Si usted prevé que la aplicación va a tener un ciclo de vida largo, entonces debe considerar la posibilidad de rediseñar la tecnología de acceso a datos de la aplicación y utilizar ADO.NET en aplicaciones
  • 12. COMPUTACIÓN E INFORMÁTICA 12 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 administradas o ADO en aplicaciones nativas. A largo plazo, el uso de las tecnologías más modernas de acceso a datos reduce el tiempo de desarrollo, simplifica el código y proporciona un rendimiento excelente. ACCESO A DATOS CON ADO.NET  ADO.NET es una tecnología de acceso a datos que se basa en los objetos ADO (Objetos de Datos ActiveX) anteriores.  Es una manera nueva de acceder a los datos construida sobre ADO. ADO.NET puede coexistir con ADO.  También podemos decir que ADO.NET es un conjunto de clases que exponen servicios de acceso a datos al programador de .NET.  ADO.NET proporciona un conjunto variado de componentes para crear aplicaciones distribuidas de uso compartido de datos. Forma parte integral de .NET Framework, y proporciona acceso a datos relacionales, datos XML y datos de aplicaciones.  ADO.NET es compatible con diversas necesidades de programación, incluida la creación de clientes de bases de datos clientes y objetos empresariales de nivel medio utilizados por aplicaciones, herramientas, lenguajes o exploradores de Internet.  ADO.NET utiliza un modelo de acceso pensado para entornos desconectados. Esto quiere decir que la aplicación se conecta al origen de datos, hace lo que tiene que hacer, por ejemplo seleccionar registros, los carga en memoria y se desconecta del origen de datos.  ADO.NET es un conjunto de clases que usted utiliza para acceder y manipular orígenes de datos como por ejemplo, una base de datos en SQL Server o una planilla Excel.  ADO.NET utiliza XML como el formato para transmitir datos desde y hacia su base de datos y su aplicación Web.  Hay 3 espacios de nombres que se importará en un formulario Web o formulario Windows si está usando ADO.NET:  System.Data.  System.Data.SqlClient.  System.Data.OleDb. Espacios de nombres para datos en el .NET Framework Entre los espacios de nombres de .NET Framework relativos a datos y XML se incluyen: Espacio de Nombre Descripción System.Data Consiste en las clases que constituyen la arquitectura ADO.NET, que es el método primario para tener acceso a los datos de las aplicaciones administradas. La arquitectura ADO.NET permite crear componentes que administran eficientemente datos procedentes de múltiples orígenes. ADO.NET también proporciona las herramientas necesarias para solicitar, actualizar y reconciliar datos en aplicaciones distribuidas. System.Data.Common Contiene las clases que comparten los proveedores de datos .NET Framework. Dichos proveedores describen una colección de clases que se utiliza para obtener acceso a un origen de datos, como una base de datos, en el espacio administrado.
  • 13. System.Xml Clases que proporcionan funcionalidad basada en estándares para procesar código XML. System.Data.OleDb Clases que componen el proveedor de datos de .NET Framework para orígenes de datos compatibles con OLE DB. Estas clases permiten conectarse a un origen de datos OLE DB, ejecutar comandos en el origen y leer los resultados. System.Data.SqlClient Clases que conforman el proveedor de datos de .NET Framework para SQL Server, que permite conectarse a un origen de datos SQL Server 7.0, ejecutar comandos y leer los resultados. El espacio de nombres System.Data.SqlClient es similar al espacio de nombres System.Data.OleDb, pero optimizado para el acceso a SQL Server 7.0 y versiones posteriores. System.Data.SqlTypes Proporciona clases para tipos de datos nativos de SQL Server. Estas clases ofrecen una alternativa más segura y más rápida a otros tipos de datos. System.Data.OleDb Clases que componen el proveedor de datos de .NET Framework para OLE DB. Estas clases permiten el acceso a orígenes de datos ODBC en el espacio administrado. System.Data.OracleClient Clases que componen el proveedor de datos de .NET Framework para Oracle. Estas clases permiten el acceso a orígenes de datos Oracle en el espacio administrado. Para el acceso a datos desde Visual Basic se utiliza el nuevo modelo de acceso a datos que proporciona la plataforma .NET FrameWork: ADO.NET. Básicamente, se implementarán a modo de ejemplo algunas aplicaciones Windows Forms que accedan a datos utilizando la tecnología ADO.NET. Descripción:  Conceptos de Bases de Datos:
  • 14. COMPUTACIÓN E INFORMÁTICA 14 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Terminología de las Bases de Datos: Los siguientes términos se definen en el contexto de las bases de datos relacionales. � Base de datos relacional: Una base de datos relacional es un tipo de base de datos que almacena información en tablas. Las bases de datos relacionales utilizan valores coincidentes de dos tablas para relacionar datos en una tabla con datos de otra. En una base de datos relacional, normalmente almacenamos un tipo específico de datos sólo una vez. � Tabla: Una tabla es un objeto base de datos que almacena datos en registros (filas) y campos (columnas). Normalmente, los datos tienen relación con una categoría concreta de cosas, como empleados o pedidos. � Registro: Un registro es una colección de datos sobre una persona, un lugar, un evento o algún otro elemento. Los registros son los equivalentes lógicos de filas en una tabla. Por ejemplo, un registro en la tabla Empleados debería tener información sobre un empleado particular. � Campo: Un registro está compuesto de varios campos. Cada campo de un registro contiene una pieza de información sobre el registro. Por ejemplo, el registro de un Empleado tiene campos para el ID del empleado, Apellido, Nombre, etc. � Clave principal:
  • 15. Una clave principal identifica de modo único cada fila de una tabla. La clave principal es un campo o una combinación de campos cuyo valor es único para cada fila (o registro) de la tabla. Por ejemplo, el campo Employee ID es la clave primaria para la tabla Empleados. No puede haber dos empleados con el mismo ID. � Clave foránea: Una clave foránea es uno o más campos (columnas) de una tabla que hacen referencia al campo o campos de la clave principal de otra tabla. Una clave foránea indica cómo están relacionadas las tablas. � Relación: Una relación es una asociación establecida entre campos comunes (columnas) de dos tablas. Una relación puede ser de uno a uno, de uno a muchos, o de muchos a muchos. Las relaciones permiten que los resultados de las consultas incluyan datos de varias tablas. Una relación uno a uno entre una tabla Clientes y una tabla Pedidos permitiría que una consulta devolviera todos los pedidos de un determinado cliente. � Acceso de sólo lectura: El acceso de sólo lectura a una base de datos significa que podemos recuperar (leer) los datos pero no podemos modificarlos (escribir). Un archivo de sólo lectura o un documento puede visualizarse o imprimirse pero no puede modificarse de ningún modo. � Acceso de lectura/escritura: El acceso de lectura/escritura a una base de datos significa que podemos recuperar (leer) los datos y modificarlos (escribir). Cómo funciona la Programación de Bases de Datos: Cuando desarrollamos aplicaciones, tenemos diferentes requerimientos para trabajar con datos. En algunos casos, simplemente desearemos mostrar datos en un formulario. En otros casos, es posible que necesitemos crear una forma de compartir información con otra organización. � Principales tareas de la programación de bases de datos:
  • 16. COMPUTACIÓN E INFORMÁTICA 16 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Cuando trabajamos con datos, utilizamos varios objetos para recuperar y modificar información de una base de datos. En general, cuando trabajamos con bases de datos en ADO.NET, realizamos las siguientes tareas: 1. Conectar a una base de datos. 2. Solicitar datos específicos. Especificar los datos que se desean recuperar y si se necesita acceso de solo lectura o de lectura/escritura a los datos. 3. Recuperar y mostrar los datos. 4. Cerrar la conexión (en algunas aplicaciones). 5. Modificar los datos recuperados (si se dispone de acceso de lectura/escritura). 6. Volver a abrir la conexión (en algunas aplicaciones). 7. Transmitir a la base de datos los cambios realizados en los datos. 8. Cerrar la conexión. ¿Qué es SQL? Antes de que podamos escribir una aplicación que utilice datos, necesitamos saber algo sobre el Lenguaje de consulta estructurado (Structured Query Language, SQL). Utilizamos SQL para especificar exactamente qué registros recuperar de una base de datos. __________________________________________________________________________________ NOTA: SQL está definido por el estándar American National Standards Institute (ANSI). Existen diferentes implementaciones de SQL para diferentes motores de bases de datos. Por ejemplo, existe una versión de SQL para bases de datos Microsoft Access (Jet 4.0) y una para SQL Server. � La instrucción SELECT: Utilizando SQL, podemos especificar exactamente qué registros deseamos recuperar y el orden en que los deseamos. Podemos crear una instrucción SQL que recupere información de múltiples tablas a la vez, o podemos crear una instrucción que recupere un registro específico. La instrucción SELECT devuelve campos específicos de una o más tablas de una base de datos. La siguiente instrucción recupera el nombre de todos los registros de la tabla Empleados: SELECT Nombre FROM Empleados Para seleccionar todos los campos de la tabla, se utiliza un asterisco (*):
  • 17. SELECT * FROM Empleados Ejemplo con Visual Basic .NET: Cuando utilizamos instrucciones SQL en Microsoft Visual Basic® .NET, debemos poner comillas en las instrucciones, como muestra el siguiente código: Dim sqlString As String sqlString = "SELECT * FROM Empleados" � Cláusula WHERE Podemos utilizar la cláusula WHERE para limitar la selección de registros utilizando múltiples campos para filtrar consultas. El siguiente código muestra cómo utilizar la cláusula básica WHERE para recuperar todos los registros de la tabla Empleados cuyo apellido sea igual a “Danseglio”: SELECT * FROM Empleados WHERE Apellido = 'Danseglio' Existen otras formas de la cláusula WHERE que podemos utilizar para depurar más nuestras consultas, como sigue:  Cláusula WHERE IN Podemos utilizar la cláusula WHERE IN para obtener todos los registros que satisfacen criterios específicos. Por ejemplo, podemos devolver apellidos de empleados en determinados estados, como muestra el siguiente código: SELECT Apellido FROM Empleados WHERE Empleados.Estado IN ('NY','WA')  Cláusula WHERE BETWEEN También podemos devolver una selección de registros que se encuentren entre dos criterios específicos. Observe el uso de signo de almohadilla (#) enmarcando las fechas en el siguiente código: SELECT OrderID FROM Orders WHERE OrderDate BETWEEN #01/01/93# AND #01/31/93#  Cláusula WHERE LIKE Podemos utilizar la cláusula WHERE LIKE para obtener todos los registros en los que exista una condición concreta en un campo específico. Por ejemplo, el siguiente código muestra cómo obtener todos los registros en los que el apellido empiece con la letra “D.” SELECT Apellido FROM Empleados WHERE Apellido LIKE 'D%' � Cláusula ORDER BY Podemos utilizar la cláusula ORDER BY para obtener registros en un orden determinado. La opción ASC indica orden ascendente. La opción DESC indica orden descendente. El siguiente código devuelve todos los campos de la tabla Empleados y los ordena por el apellido: SELECT * FROM Empleados ORDER BY Apellido ASC
  • 18. COMPUTACIÓN E INFORMÁTICA 18 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 ¿Qué es un entorno conectado? � Introducción. Un entorno conectado es aquel en el que un usuario o una aplicación están conectados continuamente a una fuente de datos. Durante muchos años de la historia de la informática, el único entorno disponible era el entorno conectado. � Ventajas: Un escenario conectado proporciona las siguientes ventajas:  Un entorno conectado es más fácil de mantener.  La concurrencia se controla más fácilmente.  Es más probable que los datos estén más actualizados que en un escenario desconectado. � Inconvenientes: Un escenario conectado tiene los siguientes inconvenientes:  Debe mantenerse una conexión de red constante.  Un escenario conectado proporciona una escalabilidad limitada. � Ejemplos: He aquí algunos ejemplos en los que debe utilizarse una conexión continua:  Una fábrica que requiere una conexión en tiempo real para controlar la salida de producción y el
  • 19. almacén.  Un agente de bolsa que requiere una conexión constante a los valores del mercado. ¿Qué es un entorno desconectado? � Introducción. Con la llegada de Internet, los entornos desconectados se han convertido en algo habitual, y con el creciente uso de dispositivos de mano, los escenarios desconectados se están convirtiendo en algo casi universal. Equipos portátiles, Pocket PCs y Tablet PCs permiten utilizar aplicaciones sin conexión a los servidores o a las bases de datos. En numerosas situaciones, la gente no trabaja en entornos totalmente conectados o desconectados, sino en un entorno que combina ambas opciones. � Definición. Un entorno desconectado es aquel en el que un usuario o una aplicación no están conectados constantemente a una fuente de datos. Las aplicaciones de Internet utilizan frecuentemente arquitecturas desconectadas. Se abre la conexión, se recuperan los datos y la conexión se cierra. El usuario trabaja con los datos en el navegador y la conexión vuelve a abrirse para actualizar u otras peticiones. Los usuarios móviles que trabajan con equipos portátiles son también los usuarios principales de los entornos desconectados. Los usuarios pueden llevarse un subconjunto de datos en un equipo desconectado y posteriormente fusionar los cambios con el almacén de datos central. � Ventajas. Un entorno desconectado proporciona las siguientes ventajas:  Las conexiones se utilizan durante el menor tiempo posible, permitiendo que menos conexiones den servicio a más usuarios.  Un entorno desconectado mejora la escalabilidad y el rendimiento de las aplicaciones, maximizando la disponibilidad de conexiones. � Inconvenientes. Un entorno desconectado tiene los siguientes inconvenientes:  Los datos no siempre están actualizados.  Pueden producirse conflictos de cambios que deben solucionarse.
  • 20. COMPUTACIÓN E INFORMÁTICA 20 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015  La transmisión de datos puede percibirse más lenta de lo que sería en entornos conectados. � Ejemplos. He aquí algunos ejemplos en los que podría ser apropiado un entorno desconectado:  Una aplicación que mantiene datos de clientes en un equipo portátil de un representante.  Una aplicación que hace un seguimiento de lluvias y precipitaciones.  Una aplicación que un granjero utiliza para contar el ganado. La aplicación está en el dispositivo basado en Microsoft Windows CE del granjero que ejecuta Microsoft SQL Server 2000 Windows CE Edition. � Gestión de Actualizaciones en una Aplicación Desconectada: En un entorno desconectado, varios usuarios pueden modificar los datos de los mismos registros al mismo tiempo; por ello, nuestra aplicación debe gestionar conflictos en las actualizaciones de datos. Existen varias formas para gestionarlos:  Permitir que prevalezcan las actualizaciones más recientes.  Permitir que prevalezcan las primeras actualizaciones realizadas.  Escribir código en la aplicación que permita a los usuarios determinar qué cambios deberían conservarse. Las soluciones específicas pueden variar dependiendo de los requerimientos de negocio de una determinada aplicación. NOTA. Si desea más información sobre la gestión de conflictos, consulte “Introducción a la concurrencia de datos en ADO.NET” en la documentación de Microsoft Visual Studio® .NET. COMPONENTES DE ADO.NET Los componentes de ADO.NET han sido diseñados para separar el acceso a datos de la manipulación de los datos. Existen dos componentes principales de ADO.NET que lo cumplen: el componente DataSet y los proveedores de datos .NET. Los proveedores de datos .NET constan de un conjunto de componentes que incluyen los objetos Connection, Command, DataReader y DataAdapter. Los componentes del proveedor de datos .NET están diseñados explícitamente para la manipulación de datos desconectados. ADO.NET y Windows Forms proporcionan componentes para el consumidor de datos que podemos utilizar para mostrar nuestros datos. Incluyen controles como DataGrid, que pueden ser enlazados a datos, y propiedades de enlace a datos en la mayoría de controles estándares de Windows, como los controles TextBox, Label, ComboBox y ListBox. El .NET Framework incluye numerosos proveedores de datos .NET, incluyendo el proveedor de datos de .NET para SQL Server, el proveedor de datos de .NET OLE DB para SQL, y el proveedor OLE DB para Microsoft Jet. Si necesitamos un proveedor personalizado, podemos escribir proveedores de datos .NET para cualquier fuente de datos. En este módulo, nos centraremos en el proveedor de datos de .NET OLE DB para SQL. ______________________________________________________________________________
  • 21. NOTA. Si deseamos obtener más información sobre los proveedores de datos incluidos en .NET, consultar “Utilizar proveedores de datos de .NET para obtener acceso a datos” en la documentación de Visual Studio .NET. Si deseamos obtener más información sobre la creación de proveedores personalizados, consultar “Ejemplo de proveedor de datos de .NET, Implementación de Visual Basic” en la documentación de Visual Studio .NET. Objetos comunes de ADO.NET � Introducción: Los proveedores de datos de .NET y el espacio de nombres System.Data proporcionan los objetos ADO.NET que utilizaremos en un escenario desconectado. � Objetos ADO.NET: ADO.NET proporciona un modelo de objetos común para proveedores de datos de .NET. La siguiente tabla describe los principales objetos ADO.NET que utilizaremos en un escenario desconectado. OBJETO DESCRIPCIÓN Connection Establece y gestiona una conexión a una fuente de datos específica. Por ejemplo, la clase OleDbConnection se conecta a fuentes de datos OLE DB. Command Ejecuta un comando en una fuente de datos. Por ejemplo, la clase OleDbCommand puede ejecutar instrucciones SQL en una fuente de datos OLE DB.
  • 22. COMPUTACIÓN E INFORMÁTICA 22 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 DataSet Diseñado para acceder a datos con independencia de la fuente de datos. En consecuencia, podemos utilizarlo con varias y diferentes fuentes de datos, con datos XML, o para gestionar datos locales a la aplicación. El objeto DataSet contiene una colección de uno o más objetos DataTable formados por filas y columnas de datos, además de clave principal, clave foránea, restricciones e información de la relación sobre los datos en los objetos DataTable. DataReader Proporciona un flujo de datos eficaz, sólo-reenvío y de sólo-lectura desde una fuente de datos. DataAdapter Utiliza los objetos Connection, Command y DataReader implícitamente para poblar un objeto DataSet y para actualizar la fuente de datos central con los cambios efectuados en el DataSet. Por ejemplo, OleDbDataAdapter puede gestionar la interacción entre un DataSet y una a base de datos Access. Además de las clases principales citadas en la tabla anterior, los proveedores de datos de .NET Framework también incluyen las que se enumeran en la tabla siguiente. Objeto Descripción Transaction Permite incluir comandos en las transacciones que se realizan en el origen de datos. La clase base para todos los objetos Transaction es DbTransaction. CommandBuilder Un objeto auxiliar que genera automáticamente las propiedades de comando de un DataAdapter o que obtiene de un procedimiento almacenado información acerca de parámetros con la que puede rellenar la colección Parameters de un objeto Command. La clase base para todos los objetos CommandBuilder es DbCommandBuilder. ConnectionStringBuilder Un objeto auxiliar que proporciona un modo sencillo de crear y administrar el contenido de las cadenas de conexión utilizadas por los objetos Connection. La clase base para todos los objetos ConnectionStringBuilder es DbConnectionStringBuilder. Parameter Define los parámetros de entrada, salida y valores devueltos para los comandos y procedimientos almacenados. La clase base para todos los objetos Parameter es DbParameter. Exception Se devuelve cuando se detecta un error en el origen de datos. En el caso de que el error se detecte en el cliente, los proveedores de datos de .NET Framework inician una excepción de .NET Framework. La clase base para todos los objetos Exception es DbException. Error Expone la información relacionada con una advertencia o error devueltos por un origen de datos. ClientPermission Se proporciona para los atributos de seguridad de acceso a código de los proveedores de datos de .NET Framework. La clase base para todos los objetos ClientPermission es DBDataPermission. Componente u Objeto Detalle Conjunto de datos • DataSet • DataTable • DataColumm • DataRow • DataRelation • Constraint Los conjuntos de datos almacenan datos en una memoria caché desconectada. La estructura de un conjunto de datos es similar a la de una base de datos relacional; expone un modelo jerárquico de tablas, filas y columnas. Además, contiene restricciones y relaciones definidas para el conjunto de datos.
  • 23. Adaptador de datos • OleDbDataAdapter • SqlDataAdapter • OdbcDataAdapter • OracleDataAdapter • SqlDataReader • OleDbDataReader • OdbcDataReader • OracleDataReader Los adaptadores de datos son una parte integral de los proveedores administrados por ADO.NET, que son el conjunto de objetos que se utiliza para la comunicación entre un origen de datos y un conjunto de datos. Esto significa leer datos de una base de datos para un conjunto de datos y, a continuación, volver escribir en la base de datos los datos modificados del conjunto de datos. Sin embargo, un adaptador de datos puede trasladar datos entre cualquier origen y un conjunto de datos. Por ejemplo, podría haber un adaptador que trasladara datos entre un servidor Microsoft Exchange y un conjunto de datos. Conexión de datos • SqlConnection • OleDbConnection • OdbcConnection • OracleConnection Para trasladar datos entre un almacén de datos y una aplicación, en primer lugar deberá tener una conexión con el almacén de datos. Formulario Windows Forms Windows Forms es la nueva plataforma de desarrollo de aplicaciones para Microsoft Windows, basada en .NET Framework. Este marco de trabajo proporciona un conjunto de clases claro, orientado a objetos y ampliable, que permite desarrollar complejas aplicaciones para Windows. Además, los formularios Windows Forms pueden actuar como interfaz de usuario local en una solución distribuida de varios niveles. Página de Formulario Web Forms Las páginas de formularios Web Forms pueden usarse para crear páginas Web programables que sirvan como interfaz de usuario de las aplicaciones Web. Este tipo de páginas presenta la información al usuario en cualquier explorador o dispositivo cliente e implementa lógica de aplicación mediante el código de la parte servidor. La salida de las páginas de formularios Web Forms puede contener casi cualquier lenguaje compatible con HTTP, incluidos HTML, XML, WML y ECMAScript (JScript, JavaScript). DataSet. El DataSet de ADO.NET está expresamente diseñado para el acceso a datos independientemente del origen de datos. Como resultado, se puede utilizar con múltiples y distintos orígenes de datos, con datos XML o para administrar datos locales de la aplicación. El DataSet contiene una colección de uno o más objetos DataTable formados por filas y columnas de datos, así como información sobre claves principales, claves externas, restricciones y relaciones relativas a los datos incluidos en los objetos DataTable.  Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una). Puede contener las tablas y las relaciones entre esas tablas.  Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre, filas, y columnas.  Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en memoria. Todas las DataTables tienen un filtro por defecto, mientras que pueden ser definidos cualquier número de DataViews adicionales, reduciendo la interacción con la base de datos subyacente y mejorando así el desempeño.  Un DataColumn representa una columna de la tabla, incluyendo su nombre y tipo. Un objeto DataRow representa una sola fila en la tabla, y permite leer y actualizar los valores en esa fila, así como la recuperación de cualquier fila que esté relacionada con ella a través de una relación de clave primaria - clave extranjera.
  • 24. COMPUTACIÓN E INFORMÁTICA 24 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015  Un DataRowView representa una sola fila de un DataView, la diferencia entre un DataRow y el DataRowView es importante cuando se está interactuando sobre un resultset.  Un DataRelation es una relación entre las tablas, tales como una relación de clave primaria – clave ajena. Esto es útil para permitir la funcionalidad del DataRow de recuperar filas relacionadas.  Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que los valores en una columna de clave primaria deben ser únicos. A medida que los datos son modificados cualquier violación que se presente causará excepciones. Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y Command que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML (opcionalmente con un esquema XSD), o llenarse a sí mismo desde un XML, haciendo esto excepcionalmente útil para los servicios Web, computación distribuida, y aplicaciones ocasionalmente conectadas. En el diagrama siguiente se ilustra la relación entre un proveedor de datos de .NET Framework y un DataSet. Arquitectura de ADO.NET. Cómo trabajar con bases de datos en el Explorador de servidores:
  • 25. � Introducción: Podemos utilizar el Explorador de servidores para visualizar y manipular enlaces a datos, conexiones de bases de datos, y recursos del sistema en cualquier servidor para el que tengamos acceso en red. Utilizando el Explorador de servidores, podemos:  Crear y abrir conexiones de datos a Microsoft Access, a servidores ejecutando Microsoft SQL Server y a otras bases de datos.  Iniciar sesión en servidores y mostrar sus bases de datos, tablas, campos y sus datos sin abandonar el entorno de desarrollo ni utilizar el software de la base de datos.  Visualizar los servicios del sistema, incluyendo el registro de sucesos, colas de mensajes, contadores de rendimiento y otros servicios del sistema.  Visualizar información sobre los Servicios Web XML disponibles y los métodos y esquemas que proporcionan.  Almacenar proyectos y referencias a bases de datos.  Crear componentes de datos que hagan referencia al recurso de datos o monitorizar su actividad arrastrando nodos desde el Explorador de servidores a nuestros proyectos de Visual Studio .NET.  Interactuar con recursos de datos programando los componentes de datos creados en nuestros proyectos de Visual Studio .NET. � Abrir el Explorador de servidores: Podemos abrir el Explorador de servidores en cualquier momento durante el proceso de desarrollo, mientras trabajamos con cualquier tipo de proyecto o elemento.  Abrir el Explorador de servidores:  En el menú Ver, hacer clic en Explorador de servidores.  Si la ficha Explorador de servidores se muestra en el extremo izquierdo de la pantalla, hacer clic en esa ficha. � Agregar y eliminar conexiones a datos: El Explorador de servidores muestra las conexiones a bases de datos bajo el nodo Conexiones de datos. Después de establecer una conexión, podemos diseñar programas para abrir conexiones y recuperar y manipular los datos. De modo predeterminado, el Explorador de servidores muestra conexiones a datos y enlaces a servidores utilizados con anterioridad.  Agregar una conexión a datos en el Explorador de servidores: 1. En el menú Herramientas, hacer clic en Conectar con base de datos. Se abre el cuadro de diálogo Propiedades del vínculo de datos. 2. En la ficha Proveedor del cuadro de diálogo Propiedades del vínculo de datos, seleccionar un proveedor.
  • 26. COMPUTACIÓN E INFORMÁTICA 26 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 3. En la ficha Conexión del cuadro de diálogo Propiedades del vínculo de datos, proporcionar la información que se solicita. Los campos de entrada que se muestran pueden variar en función del proveedor seleccionado en la ficha Proveedor. Por ejemplo, si seleccionamos el proveedor OLE DB para SQL Server, la ficha Conexión muestra campos para el nombre de servidor, el tipo de autenticación y la base de datos. 4. Hacer clic en Aceptar para establecer la conexión de datos. El cuadro de diálogo Propiedades del vínculo de datos se cierra, y la nueva conexión de datos aparece debajo del nodo Conexiones de datos, con el nombre del servidor y de la base de datos a la que se accede. Por ejemplo, si creamos una conexión de datos a una base de datos denominada NWind en un servidor llamado Server1, aparece una nueva conexión con el nombre Server1.NWind.dbo bajo el nodo Conexiones de datos.  Eliminar una conexión de datos desde el Explorador de servidores: 1. En el Explorador de servidores, expandir el nodo Conexiones de datos. 2. Seleccionar la conexión a la base de datos deseada. 3. Pulsar DELETE. No se produce ningún efecto en la base de datos. Hemos eliminado la referencia desde nuestra vista. � Arrastrar y soltar recursos de datos: Podemos arrastrar elementos desde el Explorador de servidores y soltarlos en el Diseñador de Windows Forms. Ubicar elementos en el Diseñador de Windows Forms crea nuevos recursos de datos que están preconfigurados para recuperar información de fuentes de datos seleccionadas.  Crear un nuevo componente de datos utilizando el Explorador de servidores Podemos crear un componente de datos preconfigurado para hacer referencia a un determinado recurso. 1. En la vista de Diseño, abrir el formulario al que deseamos agregar un componente de datos. 2. En el Explorador de servidores, seleccionar el elemento de datos que deseamos utilizar. Un ejemplo de elemento de datos es un campo o una tabla. 3. Arrastrar el elemento desde el Explorador de servidores a la superficie del diseñador. � Visualizar elementos de la base de datos: Podemos utilizar el Explorador de servidores para visualizar y recuperar información de todas las bases de datos instaladas en un servidor. Podemos hacer una lista de tablas, vistas, procedimientos almacenados y funciones de la base de datos en el Explorador de servidores, expandir tablas individuales para hacer una lista de sus columnas y disparadores, y hacer clic con el botón derecho sobre la tabla para seleccionar el Diseñador de tablas del menú contextual. ADO.NET y XML
  • 27. � Introducción ADO.NET está estrechamente integrado con XML. Por ello, ADO.NET facilita la conversión de datos relacionales a formato XML. También podemos convertir datos de XML en tablas y relaciones. � Importancia del uso de XML XML es una forma útil y portátil de representar datos de un modo abierto e independiente de la plataforma. Una característica importante de los datos XML es que están basados en texto. El uso de datos basados en texto, en contraposición a pasar datos binarios como el conjunto de resultados de ADO, facilita el intercambio de datos XML entre aplicaciones y servicios, aunque se estén ejecutando en diferentes plataformas. XML también permite que las organizaciones intercambien datos sin necesidad de una personalización adicional del software propietario de cada organización. � Soporte de XML El modelo de objetos ADO.NET incluye soporte extensivo para XML. Cuando utilice el soporte de XML en ADO.NET, debe tener en cuenta los siguientes hechos y directrices:  Se pueden leer datos de un DataSet en formato XML. El formato XML es útil si desea intercambiar datos entre aplicaciones o servicios en un entorno distribuido.  Se puede rellenar un DataSet con datos XML. Esto resulta útil si se reciben datos XML de otra aplicación o servicio y se desea actualizar una base de datos utilizando estos datos.  Puede crearse un esquema XML para la representación XML de los datos en un DataSet. El esquema XML puede utilizarse para realizar tareas como serializar los datos XML a un flujo o archivo.  Pueden cargarse datos XML desde un flujo o un archivo a un árbol Document Object Model (DOM). A continuación, pueden manipularse los datos como XML o como un DataSet. Para ello, debe disponer de un esquema XML para describir la estructura de los datos para el DataSet.  Pueden crearse DataSets tipados. Un DataSet tipado es una subclase de DataSet, con propiedades y métodos adicionales para tener disponible la funcionalidad de DataSet. Para describir la representación XML del DataSet tipado, Visual Studio .NET genera una definición equivalente del esquema XML para este DataSet. � Ejemplo de uso de XML en una aplicación desconectada Este ejemplo describe cómo utilizar XML en una aplicación ADO.NET desconectada. Podemos utilizar XML para intercambiar datos entre las distintas partes del sistema del modo siguiente: 1. La aplicación cliente invoca un servicio Web XML para solicitar datos de una base de datos. 2. El servicio Web XML consulta una fuente de datos para obtener los datos solicitados.
  • 28. COMPUTACIÓN E INFORMÁTICA 28 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 3. El servicio Web XML carga los resultados en un DataSet. 4. El servicio Web XML traduce los datos a formato XML y devuelve los datos XML a la aplicación cliente. 5. La aplicación cliente procesa los datos XML de algún modo. Por ejemplo, el cliente puede cargar los datos XML en un DataSet y enlazarlos a un control del interfaz de usuario como un DataGrid. Cuando la aplicación cliente esté lista, invoca un servicio Web XML para actualizar la fuente de datos con los cambios de los datos. 6. El servicio Web XML carga los nuevos datos XML en un DataSet y utiliza los nuevos datos para actualizar la fuente de datos. Nota. Si deseamos obtener más información sobre cómo poblar un DataSet con un flujo XML, consultar “Clase DataSet, XML” en la documentación de Visual Studio .NET. Si desea obtener más información sobre la obtención de datos como XML desde SQL Server, consultar “Proveedor de datos de .NET SQL Server, XML” en la documentación de Visual Studio .NET. Trabajar con Datos � Introducción ADO.NET proporciona todos los componentes necesarios para conectarnos a fuentes de datos y trabajar con datos en nuestras aplicaciones. En esta aprenderemos a utilizar objetos ADO.NET para conectarnos a una base de datos, recuperar modificar y transmitir datos actualizados a la base de datos. También aprenderemos cómo mostrar datos en un formulario Windows Forms utilizando el control DataGrid. Finalmente, aprenderemos cómo utilizar el Asistente para formularios de datos para automatizar el proceso de trabajar con datos. El asistente simplifica la tarea de agregar controles y establecer propiedades a unos pocos pasos sencillos. Cómo utilizar un objeto Connection:
  • 29. � Introducción Antes de trabajar con datos, es necesario establecer primero una conexión con una fuente de datos. Para conectar con una fuente de datos, escogemos el tipo de conexión, especificamos la fuente de datos, y abrimos la conexión a la fuente de datos. Cuando acabamos de trabajar con los datos, cerraremos la conexión. � Escoger el tipo de conexión Podemos utilizar el objeto Connection para conectar a una fuente de datos específica. Podemos utilizar SqlConnection para conectar a bases de datos SQL Server u OleDbConnection para conectar a otros tipos de fuentes de datos. � Especificar la fuente de datos Después de escoger el tipo de conexión, utilizamos una propiedad ConnectionString para especificar el proveedor de datos, la fuente de datos, y demás información utilizada para establecer la conexión. El formato de estas cadenas difiere ligeramente entre el espacio de nombres SqlClient y el espacio de nombres OleDb. � Abrir y cerrar la conexión de datos El objeto Connection soporta un método Open que abre la conexión después de que se hayan establecido las propiedades de la conexión, y un método Close que cierra la conexión a la base de datos después de que todas las transacciones se hayan liberado. � Ejemplo de SQL: El siguiente ejemplo muestra cómo utilizar un objeto Connection, la propiedad ConnectionString y el método Open para conectarnos a una base de datos SQL Server utilizando el Data Provider .NET de SQL Server: Dim PubsSQLConn As SqlClient.SqlConnection PubsSQLConn = New SqlClient.SqlConnection( ) PubsSQLConn.ConnectionString = "Integrated Security=True;" & _ "Data Source=local;Initial Catalog=Pubs;" PubsSQLConn.Open( ) � Ejemplo de Jet 4.0: El siguiente ejemplo muestra cómo conectarnos a una base de datos Access utilizando el Data Provider OLE DB Jet 4.0: Dim NWindOleDbConn As OleDb.OleDbConnection NWindOleDbConn = New OleDb.OleDbConnection( ) NWindOleDbConn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.MDB" NWindOleDbConn.Open( ) Cómo utilizar un objeto DataAdapter:
  • 30. COMPUTACIÓN E INFORMÁTICA 30 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 � Introducción: Tras establecer una conexión con una fuente de datos, podemos utilizar un adaptador de datos para intercambiar datos entre la fuente de datos y un dataset. En muchas aplicaciones, esto significa leer datos de una base de datos en un dataset mediante un adaptador de datos y a continuación escribir los datos cambiados desde el dataset al adaptador de datos y nuevamente a la base de datos. Sin embargo, un adaptador de datos puede mover datos entre cualquier fuente y un dataset. Por ejemplo, podría existir un adaptador que mueva datos entre un servidor que ejecute Microsoft Exchange y un dataset. � Tipos de adaptadores de datos: Visual Studio incorpora dos adaptadores de datos principales para utilizarse con bases de datos:  OleDbDataAdapter es apropiado para utilizarlo con cualquier fuente de datos que proporcione un proveedor OLE DB.  SqlDataAdapter es específico a SQL Server. Como no funciona a través de una capa OLE DB, es más rápido que OleDbDataAdapter. Sin embargo, sólo puede ser utilizado con SQL Server versión 7.0 o superior. � Creación del DataAdapter: Podemos instanciar el DataAdapter utilizando la palabra clave Dim y pasando una cadena de consulta y un objeto Connection como parámetros. El DataAdapter verificará si la Connection está abierta, y si no lo está, la abrirá para nosotros y la cerrará cuando nuestra llamada al método se complete. Esta aproximación es útil si ya hemos establecido las propiedades de un objeto Connection en nuestra aplicación y sólo necesitamos abrir la conexión para poblar las tablas de datos. � Ejemplos: Los siguientes ejemplos muestran cómo crear una instancia de una clase Sql Client DataAdapter. El código para crear una instancia de la clase DataAdapter se muestra en negrita. � Ejemplo de SQL: El siguiente ejemplo muestra cómo acceder a la tabla Titles en la base de datos Pubs: Dim PubsSQLConn As SqlClient.SqlConnection PubsSQLConn = New SqlClient.SqlConnection( ) PubsSQLConn.ConnectionString = "Integrated Security=True;" & _ "Data Source=local;Initial Catalog=Pubs;"
  • 31. Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select * from Titles", PubsSQLConn) ' Code to populate the dataset Dim titlesDataset As DataSet = New DataSet PubsAdapter.Fill(titlesDataset) ' Code to bind the dataset to form controls might go here � Ejemplo de Jet 4.0: El siguiente ejemplo muestra cómo acceder a la tabla Customers en la base de datos Northwind utilizando el OLE DB Provider para Microsoft Jet: Private NWindOleDbConn as OleDb.OleDbConnection Private Sub Form1_Load(...) Handles MyBase.Load NWindOleDbConn = New OleDb.OleDbConnection( ) NWindOleDbConn.ConnectionString = "Provider= " & _ "Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.mdb" Dim NWindAdapter As New OleDb.OleDbDataAdapter _ ("Select * from Customers", NWindOleDbConn) ' Code to populate the DataSet might go here ' Code to bind the DataSet to form controls might go here � Métodos clave: DataAdapter soporta métodos específicos para mover datos entre el dataset y la fuente de datos. Podemos utilizar un adaptador de datos para realizar las siguientes operaciones:  Recuperar filas de una fuente de datos y poblarlas en tablas de datos correspondientes en un dataset. Para recuperar filas de una fuente de datos y poblar un dataset, utilizar el método Fill de SqlDataAdapter u OleDbDataAdapter. Cuando invocamos el método, se invoca una sentencia SQL SELECT en la fuente de datos. Ejecutar este método abrirá y cerrará el objeto de conexión.  Transmitir los cambios realizados a una tabla dataset a la fuente de datos correspondiente. Para transmitir los cambios en una tabla dataset a la fuente de datos, utilizar el método Update del adaptador. Cuando invocamos el método, ejecuta cualquier sentencia SQL INSERT, UPDATE o DELETE que sea necesaria, dependiendo de si el registro afectado es nuevo, modificado o borrado. Ejecutar este método abrirá y cerrará el objeto conexión. �Ejemplo: ' Code to manipulate the data locally by using the DataSet ' goes here ' Update the database by means of the data adapter PubsAdapter.Update (PubsDataSet) � Ejemplo de Jet 4.0: ' Create the Connection, the DataAdapter, and the DataSet, ' and populate the dataset
  • 32. COMPUTACIÓN E INFORMÁTICA 32 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Dim NWindConn As OleDb.OleDbConnection NWindConn = New OleDb.OleDbConnection( ) NWindConn.ConnectionString = "Provider= " & _ "Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.mdb" Dim NWindAdapt As New OleDb.OleDbDataAdapter("SELECT * " & _ "from Customers", NWindConn) Dim NWindDataSet As DataSet = New DataSet( ) NWindAdapt.Fill(NWindDataSet, "customersTable") ' Code to manipulate the data locally by using the DataSet ' goes here ' Update the database by means of the data adapter NWindAdapt.Update (NWindDataSet.Tables("customersTable")) Cómo utilizar un objeto DataSet: � Introducción: Después de especificar los datos que queremos recuperar, el próximo paso es poblar un dataset con datos desde la base de datos. Los datasets almacenan datos en un caché desconectado. La estructura de un dataset es similar a la de una base de datos relacional y ofrece un modelo de objetos jerárquico de tablas, filas y columnas. Además, contiene restricciones y relaciones que están definidas para el dataset. � Poblar datasets: Un dataset es un contenedor, de modo que necesitamos poblarlo con datos. Podemos poblar un dataset de varios modos:  Invocar el método Fill de un adaptador de datos. Llamando este método hace que el adaptador ejecute una sentencia SQL o un procedimiento almacenado y pueble una tabla en el dataset con los resultados. Si el dataset contiene múltiples tablas, probablemente tendremos adaptadores de datos separados para cada tabla, y por tanto deberemos llamar a cada método Fill de cada adaptador por separado.
  • 33.  Poblar tablas manualmente en el dataset creando DataRows y añadirlas a la colección Rows de la tabla. Podemos hacer esto sólo en tiempo de ejecución. No podemos establecer la colección Rows en tiempo de diseño.  Leer un documento XML o flujo en el dataset.  Copiar los contenidos de otro dataset. Esta técnica puede ser útil si nuestra aplicación obtiene datasets de diferentes fuentes (diferentes Servicios Web XML, por ejemplo), pero necesita consolidarlos en un único dataset. � Ejemplo: Utilizamos un DataAdapter para acceder a datos almacenados en una base de datos y almacenar los datos en DataTables dentro de un DataSet e nuestra aplicación. � Ejemplo de SQL: Las sentencias en negrita del siguiente ejemplo muestran cómo poblar un Dataset denominado PubsDataset con datos de una base de datos SQL utilizando un DataAdapter. Sólo hay una tabla y el dataset hará referencia a ella utilizando un número de índice. El comando Update utliza la misma tabla para actualizar los cambios a la base de datos. ' Create the Connection, the DataAdapter, and the DataSet, ' and populate the dataset Dim PubsSQLConn As SqlClient.SqlConnection PubsSQLConn = New SqlClient.SqlConnection( ) PubsSQLConn.ConnectionString = "Integrated Security=True;" & _ "Data Source=local;Initial Catalog=Pubs;" Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select * from Authors", PubsSQLConn) Dim PubsDataSet As DataSet = New DataSet( ) PubsAdapter.Fill(PubsDataSet) ' Code to manipulate the data locally by using the DataSet ' goes here ' Update the database by means of the data adapter PubsAdapter.Update (PubsDataSet.Tables("authorsTable")) � Ejemplo de Jet 4.0: Las sentencias en negrita del siguiente ejemplo muestran cómo poblar un DataSet llamado NWindDataSet con datos desde una base de datos OLE DB utilizando un DataAdapter. ' Create the Connection, the DataAdapter, and the DataSet, ' and populate the dataset: Dim NWindConn As OleDb.OleDbConnection NWindConn = New OleDb.OleDbConnection( ) NWindConn.ConnectionString = "Provider= " & _ "Microsoft.Jet.OLEDB.4.0;Data Source=c:NWind.mdb" Dim NWindAdapt As New OleDb.OleDbDataAdapter("SELECT * " & _ "from Customers", NWindConn)
  • 34. COMPUTACIÓN E INFORMÁTICA 34 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Dim NWindDataSet As DataSet = New DataSet( ) NWindAdapt.Fill(NWindDataSet) ' Code to manipulate the data locally by using the DataSet ' goes here ' Update the database by means of the data adapter NWindConn.Open( ) NWindAdapt.Update (NWindDataSet) NWindConn.Close( ) Cómo utilizar un control DataGrid: � Introducción: Después de poblar un dataset, podemos visualizar y modificar datos utilizando el control DataGrid de Windows Forms. DataGrid muestra datos en una serie de filas y columnas. El caso más simple es cuando la rejilla se enlaza con una fuente de datos que contiene una única tabla sin relaciones. En ese caso, los datos aparecen simplemente en filas y columnas, como en una hoja de cálculo. � Cómo funciona el control DataGrid: Si el DataGrid se enlaza a datos con múltiples tablas relacionadas y si se activa la navegación en la rejilla, éste visualizará expansores en cada fila. Un expansor permite la navegación desde una tabla padre a una hija. Haciendo clic en un nodo se muestra la tabla hija y haciendo clic en el botón Atrás muestra la tabla padre original. En este modo, la rejilla muestra las relaciones jerárquicas entre tablas. DataGrid puede proporcionar un interfaz de usuario para un dataset, navegación entre tablas relacionadas y ricas capacidades de formateo y edición. La visualización y manipulación de datos son funciones separadas: el control gestiona el interfaz de usuario, mientras que las actualizaciones de datos las gestiona la arquitectura de enlace de datos de Windows Forms y por los proveedores de datos ADO.NET. Por tanto, múltiples controles enlazados a la misma fuente de datos permanecerán sincronizados.
  • 35. � Enlace de datos al control: Para que el control DataGrid funcione, debemos enlazarlo con una fuente de datos utilizando las propiedades DataSource y DataMember en tiempo de diseño o el método SetDataBinding en tiempo de ejecución. Este enlace vincula el DataGrid a un objeto de fuente de datos instanciado (como un DataSet o DataTable) y el control DataGrid se actualiza con los resultados de acciones realizadas sobre los datos. La mayoría de acciones específicas de datos no son realizadas por el DataGrid. Se realiza por medio de la fuente de datos.  Para enlazar el control DataGrid a una única tabla en el diseñador 1. Establecer la propiedad del control DataSource al objeto que contiene los elementos de datos a los que queremos enlazar. 2. Si la fuente de datos es un dataset, establecer la propiedad DataMember al nombre de la tabla con la que queremos enlazar. 3. Si la fuente de datos es un dataset o una vista de datos basada en una tabla de un dataset, añadir código al formulario para poblar el dataset. � Enlace simple: Utilizamos enlace simple para vincular un control a un simple campo en un DataSet. Por ejemplo, podríamos usar enlace simple para un control TextBox o Label. Utilizando la propiedad DataBindings de un control con capacidad de vinculación a datos, podemos especificar qué DataSet y qué campo enlazar con qué propiedad. � Ejemplo de SQL: El siguiente ejemplo muestra cómo enlazar datos a un control TextBox: Dim PubsSQLConn As SqlClient.SqlConnection PubsSQLConn = New SqlClient.SqlConnection( ) PubsSQLConn.ConnectionString = "Integrated Security=True;" & _ "Data Source=local;Initial Catalog=Pubs;" PubsSQLConn.Open( ) Dim PubsAdapter As SQLDataAdapter = New SQLDataAdapter _ ("Select * from Titles", PubsSQLConn) Dim PubsDataSet As DataSet = New DataSet( ) PubsAdapter.Fill(PubsDataSet) TextBox1.DataBindings.Add(New Binding("Text", _ PubsDataSet, "Authors.FirstName")) � Ejemplo de Jet 4.0: El código TextBox no difiere de cuando utilizamos un Jet 4.0. Sólo el código de Connection y DataAdapter, como muestran los ejemplos anteriores. � Enlace complejo: Utilizamos enlace complejo para enlazar un control a múltiples campos en un DataSet. Por ejemplo, utilizamos enlace complejo para un control DataGrid. Utilizando la propiedad DataSource de estos controles, podemos especificar la tabla a utilizar. � Ejemplo de Jet 4.0:
  • 36. COMPUTACIÓN E INFORMÁTICA 36 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 El siguiente ejemplo muestra cómo utilizar la propiedad DataSource de un control DataGrid para una base de datos Jet 4.0. El código que establece la propiedad está formateado en negrita. Dim NWindOleDbConn As OleDb.OleDbConnection = _ New OleDb.OleDbConnection( ) Dim NWindAdapter As New OleDb.OleDbDataAdapter _ ("Select * from Customers", NWindOleDbConn) Dim NWindDataSet As DataSet = New DataSet( ) NWindOleDbConn.ConnectionString = "Provider= " & _ "Microsoft.Jet.OLEDB.4.0;datasource=c:NWind.mdb" NWindOleDbConn.Open( ) NWindAdapter.Fill(NWindDataSet) DataGrid1.DataSource = NWindDataSet DataGrid1.DataMember = "Customers" � Ejemplo de SQL: El código TextBox no difiere de cuando utilizamos un proveedor SQL. Sólo el código de Connection y DataAdapter, como muestran los ejemplos anteriores. Cómo utilizar el Asistente para formularios de datos: � Introducción: El Asistente para formularios de datos nos ayuda a crear una aplicación Windows Forms con controles enlazados a datos. Los controles muestran datos desde cualquier fuente de datos que especifiquemos. � Ejecución del Asistente para formularios de datos: Ejecutar el Asistente para formularios de datos es como añadir un elemento a un proyecto existente.  Para ejecutar el Asistente para formularios de datos 1. Crear o abrir una aplicación Windows Forms. Nota. El asistente puede crear un formulario únicamente en un tipo de proyecto que soporte formularios. 2. Desde el menú Archivo, hacer clic en Agregar nuevo elemento. Aparece el cuadro de diálogo Agregar nuevo elemento. 3. En el panel Plantillas, hacer clic en Asistente para formularios de datos.
  • 37. 4. Poner un nombre en el formulario de datos y hacer clic en Abrir. Se inicia el asistente. 5. Seguir los pasos del asistente. � Qué hace el asistente: El Asistente para formularios de datos nos guía a través del proceso completo de crear un formulario enlazado a datos. Cuando hayamos finalizado, tendremos:  Un formulario Windows Form.  Controles enlazados a datos en el formulario.  Todos los componentes de datos necesarios para el formulario.  Métodos que podemos invocar para leer y, para Windows Forms, escribir datos. � El formulario y controles: Para visualizar datos, el formulario generado por el asistente incluye controles que están enlazados a una fuente de datos. Por ejemplo, el formulario puede contener un control de rejilla. En un formulario Windows Forms, podemos seleccionar entre una rejilla o controles específicos que muestren un registro cada vez. Podemos también generar botones que permitan a los usuarios navegar entre registros e incluir botones para guardar los cambios a los registros y añadir nuevos. � Elementos de datos: El Asistente para formularios de datos puede crear nuevos componentes de datos o utilizar componentes que estén disponibles en nuestro proyecto. Un componente de datos para el formulario está formado por varios elementos discretos:  Una conexión a una fuente de datos, como una base de datos.  Un adaptador de datos que referencia una sentencia SQL o procedimiento almacenado para obtener datos.  Un dataset tipado contiene los registros recuperados de la base de datos. El dataset incluye un esquema, un archivo de clase dataset y una instancia del dataset en el formulario. Si utilizamos el asistente para crear una fuente de datos, conectará nuestra aplicación a la base de datos especificada. Dentro de la base de datos, el asistente puede acceder a tablas o vistas. El asistente puede opcionalmente crear y utilizar una referencia a un Servicio Web XML como la fuente de datos. En ese escenario, se asume que el Servicio Web XML es capaz de devolver un dataset. Podemos utilizar el asistente para acceder a múltiples tablas y establecer relaciones entre ellas. En este caso, los controles en el formulario nos permiten visualizar tanto registros padre como hijos. � Métodos Fill y Update: Una de las tareas que necesitamos realizar es rellenar el dataset con datos de la base de datos. Por defecto, para rellenar el dataset, el asistente genera un botón Load que invoca el código que realiza la operación de llenado. Si estamos creando un nuevo dataset con el asistente, éste genera el método Fill automáticamente. Si estamos trabajando con un dataset existente, el asistente nos ofrece estas opciones para crear un método Fill:  Seleccionar un método existente Si nuestro proyecto proporciona un método que devuelve un dataset (tanto como valor de retorno de una función o como un parámetro), podemos seleccionar ese método y el asistente genera código para invocar ese método.
  • 38. COMPUTACIÓN E INFORMÁTICA 38 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015  Obviar el método Seleccione esta opción si queremos rellenar el dataset por nosotros mismos en lugar de que el código de llenado se invoque automáticamente. Si estamos generando un formulario Windows Form, el asistente también puede generar un método Update que podemos invocar para enviar cambios desde el dataset de retorno a la fuente de datos. � Pasos adicionales: Cuando el asistente finaliza y tenemos un nuevo formulario, éste está listo para ejecutarse. Hay algunos pocos pasos adicionales que podemos desear realizar y una variedad de modos en los que puede ampliar lo que el asistente ha realizado. Por ejemplo, para trabajar con el formulario que acabamos de crear, necesitamos establecer el formulario como el formulario de inicio para que podamos probarlo.  Para establecer el formulario de inicio en Windows Forms 1. En el Explorador de soluciones, hacer clic con el botón derecho en el proyecto, y a continuación hacer clic en Propiedades. La página de propiedades del Proyecto se abre con las propiedades General visualizadas. 2. Seleccionar el formulario que queremos que sea el formulario de inicio desde la lista de Objeto inicial. El asistente crea controles, elementos de datos y todo el código necesario para ejecutar el formulario. Podemos leer y modificar este código si es necesario. Podemos querer realizar las siguientes tareas para mejorar el formulario que crea el asistente:  Cambiar el aspecto y disposición de los controles en el formulario.  Si no queremos utilizar el botón Load para rellenar el dataset, podemos mover el código de llenado a otra ubicación. Un ejemplo típico es moverlo desde el procesador de eventos del botón al método de inicialización del formulario de modo que el dataset se rellena automáticamente cuando el formulario se ejecuta.  Refinar las consultas que el asistente genera para que el adaptador de datos recupere un subconjunto de los datos y que añada o modifique parámetros a los comandos del adaptador.  Añadir validación o lógica de negocio al formulario.  Añadir lógica de navegación para prevenir que ocurran excepciones cuando nos movemos más allá del primer y último registro. Acceder a datos con DataReaders:
  • 39. El beneficio de utilizar un DataSet es que nos ofrece una vista desconectada de la base de datos. Para aplicaciones de larga ejecución, es a menudo el mejor método. Sin embargo, los desarrolladores de aplicaciones Web generalmente realizan operaciones cortas y sencillas con cada petición, como visualizar datos. Para estas breves operaciones, generalmente no es eficiente mantener un objeto DataSet. En tales casos, podemos utilizar un DataReader. Seleccionar entre un DataReader y un DataSet Al decidir si nuestra aplicación debería utilizar un DataReader o un DataSet, consideremos el tipo de funcionalidad que nuestra aplicación requiere. Usar un DataSet cuando necesitemos realizar alguna de las siguientes acciones:  Transmitir datos entre niveles o desde un Servicio Web XML.  Interactuar dinámicamente con datos, como cuando enlazamos a un control Windows Forms o combinamos y relacionamos datos desde múltiples fuentes.  Almacenar localmente datos en caché para nuestra aplicación.  Proporcionar una vista jerárquica XML de datos relacionales y utilizar herramientas como Transformaciones XSL o una consulta XML Path Language (XPath) Query sobre nuestros datos. Si deseamos obtener más información, consultar “XML and the DataSet” en la documentación del .NET Framework SDK.  Realizar procesamiento intensivo sobre datos que no requiera una conexión abierta a la fuente de datos, dejando la conexión disponible a otros clientes. Si no necesitamos la funcionalidad que proporciona la clase DataSet, podemos mejorar el rendimiento de nuestra aplicación utilizando la clase DataReader para devolver nuestros datos de modo sólo-lectura/sólo-reenvío. Aunque la clase DataAdapter utiliza un DataReader para rellenar los contenidos de un DataSet, utilizando la clase DataReader en su lugar podemos asegurar los siguientes beneficios de rendimiento:  La memoria que sería consumida por el DataSet estará de este modo disponible.  El procesamiento que sería requerido para crear y rellenar los contenidos del DataSet en este caso no será necesario. En esta sección, aprenderemos cómo leer datos desde una fuente de datos utilizando DataReaders. Crear un DataReader:
  • 40. COMPUTACIÓN E INFORMÁTICA 40 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Para minimizar la dificultad de tales situaciones, el DataReader ha sido diseñado para producir un flujo sólo-lectura, sólo-reenvío que se devuelve desde la base de datos. Únicamente un registro a la vez está siempre en memoria. Hay dos clases DataReader: SqlDataReader y OleDbDataReader. Un DataReader mantiene la conexión abierta hasta que se cierra el DataReader. Para utilizar un SqlDataReader, declarar un SqlCommand en vez de un SqlDataAdapter. El SqlCommand expone un método ExecuteReader que toma un SqlDataReader como parámetro. Observar que cuando utilizamos un SQLCommand, debemos explícitamente abrir y cerrar SqlConnection. Dim mySqlConnection As New - SqlConnection("server=(local)NetSDK; - Trusted_Connection=yes;database=northwind") mySqlConnection.Open() Dim mySqlCommand As New SqlCommand( - "select * from customers", mySqlConnection) Dim myReader As SqlDataReader = mySqlCommand.ExecuteReader() '... If Not (myReader Is Nothing) Then myReader.Close() End If If mySqlConnection.State = ConnectionState.Open Then mySqlConnection.Close() End If � Gestión de errores con un DataReader: Cuando utilizamos conexiones con el objeto DataReader, siempre deberíamos utilizar un bloque Try/Finally para garantizar que, si se lanza alguna excepción, las conexiones se cerrarán. Dim myReader As SqlDataReader = Nothing Dim mySqlConnection As New - SqlConnection("server=(local)NetSDK; - Trusted_Connection=yes;database=northwind") Dim mySqlCommand As New SqlCommand( - "select * from customers", mySqlConnection) Try mySqlConnection.Open() myReader = mySqlCommand.ExecuteReader() Catch e As Exception
  • 41. Console.WriteLine(e.ToString()) Finally If Not (myReader Is Nothing) Then myReader.Close() End If If mySqlConnection.State = ConnectionState.Open Then mySqlConnection.Close() End If End Try Leer datos de un DataReader: Una vez que hemos invocado el método ExecuteReader del objeto Command, accedemos a un registro en el DataReader invocando el método Read. La posición inicial en el DataReader se sitúa antes del primer registro; por tanto, debemos invocar a Read antes de acceder a cualquier dato. Cuando no hay más registros disponibles, el método Read devuelve False. � Leer campos desde el registro actual: Para recuperar datos desde campos en el registro actual, podemos llamar un método Get (por ejemplo: GetDateTime, GetDouble, GetInt32 o GetString). El parámetro del método Get es el valor ordinal del campo que queremos leer. Por ejemplo, el siguiente código lee los campos CustomerID y CompanyName desde el registro actual del DataReader utilizando el método GetString: Dim customerID As String = myReader.GetString(0) Dim companyName As String = myReader.GetString(1) Podemos también referenciar los campos de datos en el registro actual del DataReader por nombre y a continuación llamar a una función de conversión apropiada, como se muestra en el siguiente ejemplo de código: Dim customerID As String = myReader("CustomerID").ToString() Dim companyName As String = myReader("CompanyName").ToString()
  • 42. COMPUTACIÓN E INFORMÁTICA 42 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 � Recorrer todos los registros: Para recorrer todos los registros y mostrarlos por la consola en un DataReader, podemos utilizar un bucle While, como se muestra en el siguiente código de ejemplo: While myReader.Read() Console.Write(myReader("CustomerID").ToString() + _ " ") Console.WriteLine(myReader("CompanyName").ToString()) End While � Cerrar el DataReader: Mientras que el DataReader está en uso, la conexión asociada está ocupada sirviendo el DataReader. Por tanto, debemos llamar a Close para cerrar el DataReader cuando hayamos acabado de utilizarlo. If Not (myReader Is Nothing) Then myReader.Close() End If If mySqlConnection.State = ConnectionState.Open Then mySqlConnection.Close() End If Uso de DataSets frente a DataReaders: El procedimiento general para acceder a bases de datos desde ASP.NET varía, dependiendo de si utilizamos un DataSet o un DataReader: Usando DataSets Usando DataReaders 1. Conectar a la base de datos utilizando SqlConnection u OleDbConnection. 1. Conectar a la base de datos utilizando SqlConnection u OleDbConnection.
  • 43. 2. Almacenar la consulta de la base de datos en un SqlDataAdapter o en un OleDbDataAdapter. 2. Abrir la conexión con el método Open. 3. Poblar un DataSet desde el DataAdapter utilizando Fill. 3. Almacenar la consulta de la base de datos en objetos SqlCommand u OleDbCommand. 4. Crear una nueva DataView para la tabla deseada. 4. Poblar un DataReader desde el Command utilizando el método ExecuteReader. 5. Enlazar un control servidor, como el DataGrid al DataView. 5. Invocar los métodos Read y Get del DataReader para leer datos. 6. Visualizar manualmente los datos. 7. Cerrar el DataReader y la conexión. RESUMEN Para el acceso a datos desde Visual Basic se utiliza el nuevo modelo de acceso a datos que proporciona la plataforma .NET FrameWork : ADO.NET. Basicamente, se implementarán a modo de ejemplo algunas aplicaciones Windows Forms que accedan a datos utilizando la tecnología ADO.NET. Podriamos definir ADO.NET como:  Un conjunto de interfaces, clases y estructuras que permiten el acceso a datos desde la plataforma .NET de Microsoft.  Una evolución del API ADO de Microsoft.  Permite un modo de acceso a datos desconectado. Esto quiere decir que, a través de ADO.NET, sólo estaremos conectados al servidor el tiempo estrictamente necesario para realizar la carga de los datos en el DataSet. Acceso Desconectado: Mediante el acceso desconectado que proporciona la plataforma .NET a través de ADO.NET, reduciremos el número de conexiones aumentando la capacidad de carga de trabajo de nuestro servidor ya que se soportarán una mayor cantidad de usuarios por unidad de tiempo. Normalmente, cuando se recoge información de una Base de Datos es con el propósito de realizar algún tipo de proceso con ella: mostrarla por pantalla, procesarla o enviarla a algún componente. Con frecuencia, no sólo necesitaremos una sola fila, sino un conjunto de ella. Y también será frecuente que necesitemos información que se encuentre en más de una tabla (join de tablas). Lo que hará la aplicación entonces será cargarlos y tratarlos como un bloque compacto. En un modelo desconectado, sería ilógico tener que conectar cada vez que queramos avanzar al registro siguiente para recoger la información de dicho registro. Así, lo que se hace para solucionar ese inconveniente es almacenar temporalmente toda la información necesaria para poder trabajar posteriormente con ella. Esto es lo que representa un objeto DataSet en el modelo ADO.NET.
  • 44. COMPUTACIÓN E INFORMÁTICA 44 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015 Un objeto DataSet es una caché de registros recuperados de una Base de Datos que puede llegar a contener más de una tabla, basadas éstas en tablas reales de la Base de Datos. Será importante saber que los DataSet son almacenes estáticos. Es decir, no se “enterarán” de los cambios realizados en la Base de Datos real, hasta que no se hayan recargado dichos datos. Por lo que será necesario hacerlo si queremos “estar al dia”. En definitiva, un objeto DataSe es capaz de almacenar toda una Base de Datos lógica y siempre con independencia del fabricante que la diseño, lo que da una gran flexibilidad de trabajo al modelo ADO.NET de Microsoft. Espacio de nombres System.Data: Dentro del espacio de nombres System.Data nos encontramos con las siguientes clases, que son el eje central de ADO.NET:  DataSet: Almacén de datos de ADO.NET. Representa una Base de Datos desconectada del proveedor de datos. Capaz de almacenar datos y relaciones.  DataTable: Un contenedor de datos. Estructurado como un conjunto de filas (DataRow) y de columnas (DataColumn).  DataRow: Registro que almacena x valores. Representación de una fila/tupla de una Bases de Datos en ADO.NET.  DataColumn: Contiene la definición de una columna de una Base de Datos. Espacios de nombres System.Data.Client y Sistem.Data.OleDb:  SqlCommand / OleDbCommand: Clases que representan un comando de SQL contra un SGBD.  SqlConnection / OleDbConnection: Clases que representan la etapa de conexión a un SGBD.  SqlCommandBuilder / OleDbCommandBuilder: Generador de comandos SQL de inserción, modificación y borrado de una consulta de SQL.  SqlDataReader / OleDbDataReader: Un lector de datos de sólo avance, conectado a la Base de Datos  SqlDataAdapter / OleDbDataAdapter: Clase adaptadora entre un objeto DataSet y sus operaciones en la Base de Datos. Las Clases Connection: En los ejemplos que se han utilizado, se ha empleado Microsoft SQL Server 2000 como SGBD, ya que ha sido uno de los SGBD vistos en clase. El primer paso en un acceso a datos consiste en establecer una conexión con la Base de Datos. Esta operación la llevaremos a cabo gracias a las clases Connection de ADO.NET, que permiten conectar a un origen de datos.
  • 45. En ADO.NET existen dos implementaciones para algunos de los objetos, cada uno específico del origen de datos al que vayamos a conectar. En este caso, somo queremos conectar con Microsoft SQL Server lo haremos a través de la clase System.Data.SqlClient.SqlConnection. Si quisieramos hacerlo con un proveedor de datos OLEDB, lo hariamos a través de la clase System.Data.OleDb.OleDbConnection. Utilizaremos los métodos Open() y Close() para conectar y desconectar de la Base de Datos, respectivamente. El constructor de la clase Connection que empleemos (SqlConnection o OleDbConnection) recibirá como parámetro la cadena de conexión que se aplique a su propiedad ConnectionString. Veamos un ejemplo de código que conecta y desconecta de un SGBD: Imports System.Data.SqlClient Try 'Crea el objeto Conexión Dim conexion As New SqlConnection() 'Pasa la cadena de conexión conexion.ConnectionString = “server=(local);” & _ integrated security=sspi;“database=ejemplo;uid=sa;pwd=;” 'Conecta con la Base de Datos conexion.Open() MessageBox.Show(“¡Conectado!”) 'Desconecta de la Base de Datos conexion.Close() MessageBox.Show(“¡Desconectado!”) Catch excepcion As SqlException 'Se puede producir algún error durante al conectar o durante la conexión MessageBox.Show(“Error al conectar con la Base de Datos”) End Try Las clases Command: Una vez que hemos establecido la conexión con el SGBD, la siguiente operación que normalmente querremos llevar a cabo será la de enviarle sentencias para realizar diferentes operaciones con los datos. Las clases Command de ADO.NET son las que nos permitirán llevar a cabo tales operaciones. Un objeto Command nos va a permitir ejecutar una sentencia SQL sobre la fuente de datos con la que hemos conectado. También podremos obtener un cojunto de resultados. En este caso, esos datos pasarán a otros tipos de objetos como DataReader o DataAdapter. Los objetos Command se deben crear a partir de la conexión que ya se ha establecido y contendrá una sentencia a SQL a ejecutar sobre dicha conexión. Entre sus propiedades más comunes se encuentran las siguientes:  CommandText : Contiene la cadena de texto que representa la sentencia SQL que se ejecutará sobre la fuente de datos. Entre sus métodos más comunes se encuentran los siguientes:  ExecuteNonQuery : Ejecuta la sentencia SQL contenida en la propiedad CommandText del objeto Command. En este caso la sentencia que se ejecuta debe ser una sentencia de un tipo que no devuelva resultado alguno (UPDATE, DELETE, INSERT).
  • 46. COMPUTACIÓN E INFORMÁTICA 46 INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO – “DANIEL ALCIDES CARRIÓN” 2015  ExecuteReader : Ejecuta la sentencia SQL contenida en la propiedad CommandText del objeto Command. En este caso si que se devolverán resultados. El resultado devuelto será un objeto de tipo DataReader (SqlDataReader/OleDbDataReader) que nos permitirá leer y recorrer los datos devueltos por la sentencia SQL.  ExecuteScalar : Utilizada cuando sólo queremos obtener el dato de la primera columna de la primera fila. El resto de datos no se tienen en cuenta. Muy útil cuando queremos recoger la resultado, por ejemplo, de un COUNT(*) ya que este método devuelve un tipo de dato Object como resultado. Veamos un par de ejemplos: Inserción sobre una tabla ' Cadena de conexión Dim conexion As New SqlConnection() conexion.ConnectionString = “server=(local)” & _ “integrated security=sspi;database=ejemplo;uid=sa;pwd=;” ' Crea la sentencia SQL Dim sentencia As String sentencia = “INSERT INTO Alumnos VALUES (123, “Pablo”,”Neruda”,'23/12/1996”) ' Crea el comando SQL Dim comando As New SqlCommand(sentencia, conexion) Dim resultados As Integer ' Conecta con la Base de Datos conexion.Open() ' Ejecuta la sentencia SQL (NonQuery ya que es una ' ' ' inserción). Sólo devuelve el número de filas afectadas resultados = comando.ExecuteNonQuery() ' Desconecta de la Base de Datos conexion.Close() MessageBox.Show(“Se han añadido “ & resultados & “ filas”) Consulta sobre una tabla 'Cadena de conexión Dim conexion As New SqlConnection() conexion.ConnectionString = “server=(local);integrated security=sspi;” & “database=ejemplo;uid=sa;pwd=;” 'Crea la sentencia SQL Dim sentencia As String sentencia = “SELECT COUNT(*) FROM Alumnos”) ' Crea el comando SQL Dim comando As New SqlCommand(sentencia, conexion) Dim resultados As Integer 'Conecta con la Base de Datos conexion.Open() 'Ejecuta la sentencia SQL (NonQuery ya que es una ' ' ' inserción). Sólo devuelve el número de filas afectadas resultados = comando.ExecuteScalar() 'Desconecta de la Base de Datos conexion.Close() MessageBox.Show(“Hay “ & resultados & “ alumnos.”)
  • 47. Las clases DataReader: Un objeto DataReader permite la navegación hacia delante y de sólo lectura de los registros devueltos por una consulta. A diferencia de los objetos que trabajan en modo desconectado comentados anteriormente, este objeto permanece conectado durante todo el tiempo que se esté trabajando con él. Para obtener un objeto DataReader tendremos que ejecutar un método ExecuteReader() de un objeto Command basado en una consulta SQL. Estas son sus propiedades más comunes:  FieldCount : Devuelve el número de columnas de la fila actual.  IsClosed : Indica si está (True) o no cerrado (False) el objeto DataReader. Y sus métodos más comunes:  Close(): Cierra el objeto DataReader liberando los recursos.  Read(): Desplaza el cursor actual al siguiente registro permitiendo obtener los valores del mismo a través del objeto DataReader. Además, devolverá True si quedan más elementos dentro del objeto DataReader y False si hemos llegado al final del conjunto de registros. La posición inicial de un objeto DataReader es justo antes del primer registro por lo que lo primero que deberemos hacer será realizar una llamada a este método para empezar a obtener valores. Veamos un ejemplo: 'Crea la conexión Dim conexion As New SqlConnection() conexion.ConnectionString = “server=(local); integrated security=sspi; database=ejemplo;uid=sa;pwd;” 'Crea el comando Dim comando As New SqlCommand(“SELECT * FROM Alumnos”, conexion) 'Crea el DataReader Dim lectorDatos As SqlDataReader 'Conecta con la Base de Datos conexion.Open() lectorDatos = comando.ExecuteReader() 'Recorre las filas devueltas en el DataReader y los muestra en un ListBox While lectorDatos.Read() Me.listaAlumnos.Items.Add(lectorDatos(“Nombre”)) End While 'Cierra el objeto DataReader lectorDatos.Close() 'Desconecta de la Base de Datos conexion.Close() La Clase DataSet: DataSet es el almacén de datos por excelencia de ADO.NET.