Programació amb C#.NET

Documentos relacionados
ADO.NET con Base de datos SQL Server

I.- Objetivo. II.- Introducción

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

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

Acceso a Datos. Visual Basic.NET 2005

GUÍA DE TRABAJO N 11 LENGUAJE C# Programación de Software Articulación SENA Grado 10 Ing. Néstor Raúl Suarez Perpiñan Página 2 de 11

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

Mecanismos de acceso a datos usando ADO.NET

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

ADO.NET. Arquitectura de ADO.NET

Día 2: Utilizando controles de datos en Visual Studio 2008.

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

Conexión SQL Server y C# (Consola)

TEMA 5: Trabajando con bases de datos. ClaseOracleBD

Acceso a Base de Datos

3.- Desarrollo e implementación del sistema.

Tema: Conexión a Base de Datos.

ADO.NET. En este artículo vamos a ver el protocolo de acceso a datos en la plataforma.net, ADO.NET y su marco de funcionamiento con ASP.NET.

Acceso a datos con ADO.NET 2.0 (sin asistentes)

Tutorial : Hacer Combos Dependientes tipo Departamento Ciudad en ASP. Net

Acceso a Datos con ADO.NET

Presentación 4: ADO.NET

GALA. ADO Modo Conectado. Modelo de Base de Datos Relacional. m018a Curso Manejo de Datos con Visual Basic 2010, 24 h

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

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

TUTORIAL APLICACIONES EVOLUTION CON ACTIVEX EVOLINK

Tablas y Campos Nuevos

2407: Programación en Microsoft C#, 2012 Edition

PROGRAMA FORMATIVO MICROSOFT VISUAL BASIC. NET

Programación en Internet. Proceso selectivo de promoción interna para el acceso a escalas del grupo A, subgrupo A1. Ref. PI-02/12

CARTA DESCRIPTIVA DE CURSOS

XPERTO EN DISEÑO DE PÁGINAS WEB

Práctica sobre compartición de instancias remotas.

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

Reportes en.net con Crystal Reports

Para obtener más información, vea Introducción al control DataRepeater (Visual Studio).

.NET Compact Framework

DataSet. DataSet (System.Data):

ESPECIALISTA EN BASE DE DATOS

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Microsoft Visual Basic.NET

Practica 7 Conexión a su base de datos. Optativa II

Taller: Introducción a Windows Communication Foundation

I. DATOS INFORMATIVOS. Carrera Especialidad. Curso Código Ciclo. Requisitos Duración Horas Semana : 06 horas Versión : v.0810 II.

Creación de un sistema ABC

Índice general. Pág. N. 1. Capítulo Introducción a la Programación Orientada a Objetos. Capítulo 2. FrameWork 4.5 y Clases

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net

1. Manejo de memoria estática 2. Manejo de memoria dinámica

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

CONVERSOR LIBROS DE REGISTRO (IVA IGIC) Agencia Tributaria DEPARTAMENTO DE INFORMÁTICA TRIBUTARIA

Ejercicios - Persistencia en Android: ficheros y SQLite

MANUAL DE USUARIO FACTURACIÓN ELECTRÓNICA

Manual de NetBeans y XAMPP

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

MICROSOFT VISUAL BASIC.NET

Manejo de una Base de Datos Microsoft SQL Server. a través de Visual C #, vía instrucciones SQL.

Microsoft Office XP Access XP (III)

Tema: Desarrollo de aplicaciones con Visual Studio.net Parte II

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

Manual del Usuario del Power Commander III USB

Tema: CREACIÓN DE TABLAS DE RDBMS (RELATIONAL DATA BASE MANAGEMENT SYSTEM).

Práctica: Creación de un programa C# sencillo

Hi-Spins. Hi-Spins - Novedades v

Video 2: Cómo Crear una plantilla para Generar Procedimientos Almacenados

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

Recuperador datos externos

12. Acceso a Bases de Datos con VB.NET

TUTORIAL CONEXIÓN SQL SERVER 2005 CON VISUAL STUDIO 2005(TECNOLOGIA RAD)

Eurowin 8.0 SQL. Manual de la FIRMA DIGITALIZADA

Database Manager Manual del usuario DMAN-ES-01/09/10

PROCEDIMIENTO DE ENLACE NOMIPAQ

Componentes de una aplicación ASP.NET

Desarrollo de aplicaciones de acceso a bases de datos con proyectos Access

3. CONSIDERACIONES GENERALES

Guía I Preparar SQL Server con BBDD de ejemplo

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.

Consultas con combinaciones

Formularios. Formularios Diapositiva 1

GUÍA BÁSICA DE USO DEL SISTEMA RED

INSTALACIÓN DE LICENCIAS EN RED. Descripción del Procedimiento

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

Al back-end o módulo de gestión de ALES II se accede desde su página principal:

Tema: CREACIÓN DE TABLAS DE RDBMS (RELATIONAL DATA BASE MANAGEMENT SYSTEM).

Índice HERRAMIENTA DE COMPRAS Instalación de la aplicación: Uso de la Aplicación Visor de Transacciones: Ingreso al Sistema...

Manual de Usuario Sitio Dinámico e-ducativa Versión

GedicoPDA: software de preventa

CAPÍTULO 3 VISUAL BASIC

Formas de llevar a cabo un backup de una base de datos MySQL

MANAUAL DE MANTENIMIENTO PARA LA PÁGINA WEB DE PROYECTO ADL GESTOR DE CONTENIDOS

MUNIA Manual de usuario

Operación Microsoft Access 97

Proyecto visual C# 2005 Express Edition: Imprimir Página 1 de 5

PROGRAMA FORMATIVO MICROSOFT ACCESS 2003 (COMPLETO)

Transcripción:

Programació amb C#.NET Tema 5 (g): ADO.NET Jordi Linares i Pellicer Índice! Introducción! Qué es ADO.NET?! Clases y Objetos de ADO.NET! Explorador de Servidores! Orígenes de Datos! Interfaz Conectada a Datos! Programar con ADO.NET

Introducción! La mayoría de las aplicaciones actuales guardan su información en bases de datos por lo que necesitan acceder a ellas ya sea de forma local o remota.! La aparición nuevas tecnologías como ADO.NET y los servicios de acceso a datos de.net Framework han simplificado bastante la manipulación de bases de datos.! Con Visual Studio el acceso a bases de datos desde las aplicaciones se convierte en una tarea bastante sencilla. Qué es ADO.NET?! ADO.NET es un avanzado modelo de Bases de Datos para acceder a SGBDR.! Es la evolución de ADO (ActiveX Data objects) y proporciona una serie de clases para acceder a datos actualizadas al entorno.net! Incluye una serie de proveedores que actúan como intermediarios entre la base de datos y la aplicación: " SqlClient " OracleClient " OleDB " ODBC

! Objetivos de diseño de ADO.NET " Acceso simple a datos. A través de clases fáciles de usar que representan tablas, filas y columnas de la BD. " Extensibilidad para soporte a diferentes orígenes de datos. Esto permite crear nuevos proveedores de datos para.net, p.ej. MySQL. " Soporte para aplicaciones multicapa. Es la arquitectura actual de las aplicaciones de negocios y comercio electrónico. ADO.NET utiliza XML para la comunicación entre capas. " Unificación de XML y Acceso a Datos Relacionales..NET está basado en XML y ADO.NET es el puente entre los datos relacionales y la estructura jerárquica de los documentos XML. Clases y Objetos de ADO.NET! Clases básicas:! Objetos ADO.NET " Las clases de ADO.NET están definidas en el espacio de nombres System.Data. " Trabaja en modo desconectado: El programa no requiere una conexión persistente con la BD. " La conexión se abre y se cierra cuando se necesita.

! Objetos del proveedor Todos los objetos llevan el prefijo único del proveedor: SqlXxxxxxx, OleDbXXXXXX,.etc: " Connection. Establece la conexión con el origen de datos. SqlConnection, OdbcConnection, " Command. Recupera datos del proveedor. (SELECT * FROM ). Ej: SqlCommand, OdbcCommand, OleDbCommand,. " CommandBuilder. Permite hacer consultas SQL para modificar datos de objetos basados en una sola tabla. Ej: SqlCommandBuilder, OdbcCommandBuilder, " DataReader. Permite recuperar datos de sólo lectura y sólo hacia delante de un origen de datos. Ej: SqlDataReader, OdbcDataReader, " DataAdapter. Representa un conjunto de comandos SQL y una conexión al origen de datos para rellenar el objeto DataSet y actualizar los datos. Ej: SqlDataAdapter, Explorador de Servidores! La ventana se hace visible desde el menú Ver#Explorador de Servidores.! Permite abrir conexiones a datos y conectar con servidores para explorar sus bases de datos.! También permite crear nuevas bases de datos, definir tablas, acceder a su contenido, etc.! Las conexiones se muestran en el nodo Conexiones de datos.! Cada conexión representa un nodo que contiene: tablas, vistas, procedimientos almacenados, etc.

! Conexión a una base de datos existente " Desde el nodo Conexiones de Datos podremos conectar a una base de datos existente:! Creación de una Base de Datos 1 3 2

! Definición de Tablas " Al cerrar el diseñador se le da nombre a la nueva tabla. " La tabla creada aparece en el Explorador de servidores.! Edición de una tabla " Desde el explorador de servidores podremos efectuar sobre la tabla operaciones de inserción, modificación, borrado, agrupación, filtrado, etc. " Al editar la tabla, se está trabajando directamente con SQL Server 2005 que se encargará de almacenar y recuperar los datos, cumplir las restricciones, etc. " Al cerrar la edición, los cambios son permanentes en la BD del servidor.

" Desde la barra de herramientas Diseñador de consultas se pueden diseñar consultas SQL. Orígenes de Datos! Con el Explorador de Servidores se obtienen las cadenas de conexión a las bases de datos.! Estas cadenas de conexión nos permitirán definir uno o más orígenes de datos.! Un Origen de datos es un objeto de la aplicación que representa un conjunto de datos que residen en algún lugar (normalmente SGBDR).! Los orígenes de datos facilitan el acceso y edición de los datos que la aplicación necesita.! Mostrar la ventana orígenes de datos: Datos#Mostrar Orígenes de datos.

! Definición de un origen de datos

" Como resultado final se crea el conjunto de datos y se añade al proyecto:! Un esquema XSD con su estructura! Un módulo con la clase derivada de DataSet " Durante el diseño, el fichero app.config contiene la configuración para la cadena de conexión a la BD: <?xml version="1.0" encoding="utf-8"?> <configuration> <configsections> </configsections> <connectionstrings> <add name="bd_biblioteca.properties.settings.bibliotecaconnectionstring" connectionstring="datasource=.\sqlexpress; AttachDbFilename=" I:\2007-2008 IES BATOI\DAE - C# \Projectes c# 2005\BD_Biblioteca\FITXER SQL SERVER BD BIBLIOTECA\Biblioteca.mdf";Integrated Security=True; ConnectTimeout=30;User Instance=True" providername="system.data.sqlclient" /> </connectionstrings> </configuration> " Al compilar el proyecto se genera un fichero: <NomAplicacion>.exe.config que guarda la configuración de la cadena de conexión para la ejecución. Se puede modificar para actualizar la ruta a la BD.

! El diseñador de conjuntos de datos " El conjunto de datos es dinámico y durante el desarrollo de la aplicación pueden volverse a configurar desde:! Configurar DataSet con el asistente o! Editar DataSet con el diseñador. " El Adaptador de datos actúa como intermediario entre el SGBDR y el DataSet.! Asociar elementos de interfaz a tablas y columnas " Desde orígenes de datos se puede configurar el control a emplear en el formulario para cada tipo de columna. NOTA: El formulario debe estar abierto en el diseñador para que las listas desplegables aparezcan. Asociaciones para la tabla Asociaciones para las columnas

Interfaz Conectada a Datos! Los datos conectados se pueden mostrar en el formulario: " En una Cuadrícula mediante el uso del control DataGridView, o " Vista detalle mediante el uso de controles: Label, TextBox, ListaBox, etc.! Desde la ventana Orígenes de datos se puede arrastrar al formulario la tabla entera o por columnas.! El Diseñador se encarga de establecer la propiedad DataBindings de cada control de forma adecuada.! Si los controles se insertan directamente desde el Cuadro de herramientas se ha de establecer la propiedad DataBindings de forma manual. Cuadrícula (DataGrid) Vista Detalle Modo diseño Ejecución

Programar con ADO.NET! Leer datos con DataReader... Using System.Data; Using System.Data.SqlClient; public partial class Form1 : Form private SqlConnection maconnexio; public Form1() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) // Cadena de connexió maconnexio = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDbFilename=C:\Archivos de programa\microsoft SQL Server\MSSQL.1\MSSQL\Data\northwnd.mdf; Integrated Security=True;Connect Timeout=30; User Instance=True"); private void butllistarclients_click(object sender, EventArgs e) // Obrir la connexió maconnexio.open(); // Crear el command SqlCommand macommand = maconnexio.createcommand(); // Especificar la consulta SQL per al Command macommand.commandtext = "SELECT CustomerID, ContactName, CompanyName from Customers"; // Executar el DataReader per al command SqlDataReader mareader = macommand.executereader(); this.textboxclients.clear(); // Llegir les files while (mareader.read()) // mostrar les files en el textbox this.textboxclients.text += mareader["customerid"].tostring() + "\t\t" + mareader["contactname"].tostring() + "\t\t"+ mareader["companyname"].tostring() + "\r\n"; this.textboxclients.refresh(); // Tancar reader mareader.close(); // Tancar la connexió maconnexio.close();

! Actualizar datos con DataSet " La actualización de datos se realiza con el objeto DataSet. " Cada DataSet contiene un conjunto de objetos DataTable. " Cada DataTable contiene objetos DataRow y DataColumn. que representan las filas y columnas de la tabla de la BD. " Las tablas, filas y columnas del DataSet se pueden acceder por su índice o por su nombre: Ejemplo: madataset.tables["customers"].rows[n] " El DataSet se llena con el método Fill() de un objeto DataAdapter. " La estructura para acceder a tablas, filas y columnas en el DataSet es la siguiente:

public partial class Form1 : Form " Ejemplo: private SqlConnection maconnexio; private SqlDataAdapter maadapter; private DataSet madataset; private void Form1_Load(object sender, EventArgs e) // Cadena de connexió maconnexio = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDbFilename=C:\Archivos de programa\microsoft SQL Server\MSSQL.1\MSSQL\Data\northwnd.mdf; Integrated Security=True;Connect Timeout=30; User Instance=True"); // Crear el DataAdapter per actualitzar les dades maadapter = new SqlDataAdapter("SELECT CustomerID, CompanyName FROM Customers", maconnexio); // Crear el DataSet que contindrà taules, files i columnes madataset = new DataSet(); // Omplir el DataSet usant la consulta prèviament definida en el DataAdapter maadapter.fill(madataset, "Clients"); // Omplir la llista amb els noms del clients OmplirLlista(); private void OmplirLlista() listboxclients.items.clear(); for(int i=0; i<madataset.tables[0].rows.count; i++) listboxclients.items.add(madataset.tables[0].rows[i]["companyname"]); listboxclients.refresh(); listboxclients.selectedindex = 0; private void listboxclients_selectedindexchanged(object sender, EventArgs e) if (listboxclients.selectedindex>=0) textboxnom.text = (listboxclients.selecteditem).tostring(); textboxnom.focus(); private void btactualitzarnom_click(object sender, EventArgs e) if (textboxnom.text!= "") listboxclients.items[listboxclients.selectedindex] = textboxnom.text; madataset.tables[0].rows[listboxclients.selectedindex]["companyname"] = textboxnom.text; // actualitzar la BD maadapter.update(madataset, "Clients"); MessageBox.Show("BD Actualitzada"); textboxnom.clear(); private void btllistarclients_click(object sender, EventArgs e) OmplirLlista();

! Relacionar tablas en el DataSet " Cada DataSet contiene la propiedad Relations que es una colección de objetos DataRelation que representan las relaciones entre las tablas del DataSet. " Ejemplo: Customers i Orders de la BD NorthWind " Para crear una relación entre dos tablas usar el método Add(<nombreRel>, <colpadre>, <colhija>).! Ejemplo: DataRelation custorderrel= thisdataset.relations.add("custorders", thisdataset.tables["customers"].columns["customerid"], thisdataset.tables["orders"].columns["customerid"]); " El método GetChildRows(<DataRelationObj>) obtiene las filas hijas a partir de una fila de la tabla padre.! Ejemplo: customerrow.getchildrows(custorderrel);

public partial class ClientsOrdres : Form private SqlConnection maconnexio; private DataSet madataset; private SqlDataAdapter clientsadapter; private SqlDataAdapter ordresadapter; private DataRelation ClientOrdreRel; private void Form1_Load(object sender, EventArgs e) // Cadena de connexió maconnexio = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDbFilename=C:\Archivos de programa\microsoft SQL Server\MSSQL.1\MSSQL\northwnd.mdf; Integrated Security=True;Connect Timeout=30; User Instance=True"); madataset = new DataSet(); // DataAdapters clientsadapter = new SqlDataAdapter("SELECT * FROM Customers", maconnexio); clientsadapter.fill(madataset, "Clients"); ordresadapter = new SqlDataAdapter("SELECT * FROM Orders", maconnexio); ordresadapter.fill(madataset, "Ordres"); //Relació ClientOrdreRel = madataset.relations.add("clientsordres", madataset.tables["clients"].columns["customerid"], madataset.tables["ordres"].columns["customerid"]); //carregar els clients al combobox de clients OmplirComboClients(); //mostrar les ordres del primer client DataRow RowClient = madataset.tables["clients"].rows[0]; MostrarOrdresClient(RowClient); private void OmplirComboClients() comboboxclientes.items.clear(); foreach (DataRow d in madataset.tables["clients"].rows) comboboxclientes.items.add(d["companyname"] + " - " + d["customerid"]); comboboxclientes.selectedindex = 0; private void MostrarOrdresClient(DataRow RowClient) listboxordenes.items.clear(); foreach (DataRow d in RowClient.GetChildRows(ClientOrdreRel)) DateTime fecha = System.Convert.ToDateTime(d["OrderDate"]); listboxordenes.items.add(d["orderid"] + " - " + d["customerid"] + " - " + d["employeeid"] + " - " + fecha.toshortdatestring() + " - " + d["shipvia"] + " - " + d["shipcity"] + " - " + d["shipcountry"]); private void comboboxclientes_selectedindexchanged(object sender, EventArgs e) DataRow RowClient = madataset.tables["clients"].rows[comboboxclientes.selectedindex]; MostrarOrdresClient(RowClient);

Creación de una BBDD con MySQL! Crear un nuevo usuario! Crear una nueva tabla (asociada a un esquema)! Crear campos e insertar información! Dar permisos al usuario creado sobre la tabla creada Creación de una BBDD con MySQL! Crear un nuevo usuario:

Creación de una BBDD con MySQL! Creando la tabla cliente : Creación de una BBDD con MySQL! Insertando algunas filas:

Creación de una BBDD con MySQL! Insertando algunas filas: Creación de una BBDD con MySQL! Asignando permisos de acceso a la tabla al usuario prova :

Creación de una BBDD con MySQL! Creando una aplicación e insertando el componente MySQL: Creación de una BBDD con MySQL using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using MySql.Data.MySqlClient; using MySql.Data.Types; namespace ConsoleApplication3 class Program static void Main(string[] args) MySqlConnection maconexio = null; MySqlDataAdapter maadapter; DataSet madataset; // Formem la cadena de conexió string cadenaconexio = "SERVER=127.0.0.1; PORT=3306; USER=prova; PASSWORD=prova; DATABASE=test;"; // Creem la conexió try maconexio = new MySqlConnection(cadenaconexio); catch (Exception e) Console.WriteLine("Hi ha algún problema en la conexió amb la base de dades:\n" + e.message); string select = "SELECT * FROM client"; maadapter = new MySqlDataAdapter(select, maconexio); madataset = new DataSet(); maadapter.fill(madataset, "client"); // Llistat de clients int numclients = madataset.tables["client"].rows.count; for (int i = 0; i < numclients; i++) Console.WriteLine("Nombre: " + madataset.tables["client"].rows[i]["nombre"] + " " + "Dirección: " + madataset.tables["client"].rows[i]["direccion"]);

Creación de una BBDD con MySQL MySqlConnection maconexio = null; MySqlDataAdapter maadapter; DataSet madataset; // Formem la cadena de conexió string cadenaconexio = "SERVER=127.0.0.1; PORT=3306; USER=prova; PASSWORD=prova; DATABASE=test;"; // Creem la conexió try maconexio = new MySqlConnection(cadenaconexio); catch (Exception e) Console.WriteLine("Hi ha algún problema en la conexió amb la base de dades:\n" + e.message); string select = "SELECT * FROM client"; maadapter = new MySqlDataAdapter(select, maconexio); madataset = new DataSet(); maadapter.fill(madataset, "client"); // Llistat de clients int numclients = madataset.tables["client"].rows.count; for (int i = 0; i < numclients; i++) Console.WriteLine("Nombre: " + madataset.tables["client"].rows[i]["nombre"] + " " + "Dirección: " + madataset.tables["client"].rows[i]["direccion"]); Creación de una BBDD con MySQL! Resultado de la ejecución: