Вы находитесь на странице: 1из 23

Pgina 1 de 23

TALLER EN CLASE N 1 Control de Industrias Ejercicio de Modelacin (1)

EMCALI (Empresas Municipales de Cali) Las Empresas Municipales son un establecimiento pblico descentralizado. En el seno de emcali, el Departamento de Tratamiento de Aguas Residuales tiene por misin hacer el seguimiento a la descarga de aguas negras domsticas e industriales en los puntos de descarga. El objetivo de este ejercicio es familiarizarnos con la creacin de un Modelo Conceptual de Datos (MCD) para contestar a la problemtica de emcali. El MCD define e identifica los componentes conceptuales, Objetos y relaciones que sern tratadas por el sistema, independientemente de aspectos de software. El MCD al describir las Objetos y sus relaciones, caracteriza los atributos que le sern incluidos, indica cuales sern representados en la base de datos y determina finalmente los lazos o tipos de unin que deben ser establecidos entre los diversos elementos integrados en el sistema. Un MCD bien definido constituye el corazn del proyecto de desarrollo del sistema. El proceso de modelizacin se puede definir entonces como el proceso de transformacin de seales percibidas en un modelo pertinente por una actividad dada. El resultado de este proceso de abstraccin es un modelo conceptual que debe representar lo mejor posible la realidad. Con toda la informacin descrita a continuacin ayude a disear el Modelo Conceptual de Datos ms apropiado. Las industrias se encuentran dentro de los barrios. Cada una de ellas lleva un identificante, su nombre y la direccin. Los barrios estn contenidos dentro de las comunas. A los puntos de descarga definidos para cada industria se le ha atribuido un identificante nico. Se anota tambin el tipo de descarga, la direccin y la ubicacin exacta donde ha ocurrido. A cada descarga se le ha asignado un identificante nico y adems se anota la hora en que ocurri. Cada comuna como cada barrio poseen un identificante nico. Se han definido los productos qumicos que son utilizados por cada una de las industrias. Es decir, nombre del producto, identificante, cantidad y forma. Se poseen los datos de poblacin y mortalidad de cada comuna. Los atributos establecidos para barrio son: Nombre, Comuna donde se encuentra, su poblacin, N de viviendas y N de comercios. Cada vez que ocurre una descarga se realiza un muestreo que se define con un identificante nico y en donde se registra: La Fecha, el caudal, DBO, DQO, MS. Mtodo a seguir Defina claramente cules son los objetos que forman el modelo, defina el tipo de relacin entre ellas (tipo de unin) y enseguida identifique los atributos que debe contener cada objeto.

Pgina 2 de 23

TALLER EN CLASE N 2 Control de Industrias Ejercicio de Modelacin (2) Modelo Conceptual de Datos Un modelo es una representacin simplificada de una realidad compleja El modelo conceptual presenta una visin esquematizada de la realidad. Se encuentran los objetos necesarios para el control del uso de productos qumicos en industrias y de las descargas de las mismas. Este modelo presenta los objetos del espacio que se quieren entrar en la base de datos y las relaciones que las unen.

Comuna CdigoComuna Poblacin Mortalidad

Productos Qumicos Id_Producto Nombre Cantidad Forma

1,n

1,1

Contener

Usar

1,1
Barrio CdigoBarrio Nombre Poblacin NoViviendas NoComercios

1,n 1,1
Desarrollar

0,1

Industria Id_Industria Nombre Direccin 1,n

Muestra Id_Muestra Fecha Caudal DBO DQO MS

1,1

Descargar

Muestrear

1,1
Puntos de Descarga Id_PtoDescarga Direccin Ubicacin Tipo

0,1 1,n
Ocurrir

1,1

Descarga Id_Descarga Horario

Pgina 3 de 23

TALLER EN CLASE N 3 Control de Industrias Ejercicio de Modelacin (3) Modelo Lgico o Relacional de Datos El modelo conceptual se traduce segn las reglas establecidas en un modelo lgico (tambin llamado modelo relacional) de datos. En este modelo se pueden ver las tablas tal como sern integradas en la base de datos. Se puede ver que las llaves primarias pasaron a los Objetos que lo necesitaban. Estos atributos sern los atributos que se van a usar cuando se hagan los lazos.

Comuna CdigoComuna Poblacin Mortalidad

Productos Qumicos Id_Producto Nombre Cantidad Forma Id_Industria

1,n 1,1

1,1
Barrio CdigoBarrio Nombre Poblacin NoViviendas NoComercios CdigoComuna

1,n Industria Id_Industria Nombre Direccin CdigoBarrio 1,n

0,1

1,1

Muestra Id_Muestra Fecha Caudal DBO DQO MS Id_Descarga

1,1

1,1
Puntos de Descarga Id_PtoDescarga Direccin Ubicacin Tipo Id_Industria

0,1 1,n 1,1 Descarga Id_Descarga Horario Id_PtoDesca rga

Pgina 4 de 23

TALLER EN CLASE N 4 Control de Industrias Crear la Base de datos en MySQL Barrios y Comunas 1. Del modelo estudiado realice como ejercicio previo la creacin de una base de datos que contenga nicamente las dos tablas: Comuna y Barrios. 2. En el explorador de Windows proceda a crear una carpeta de nombre Comunas ubicada en el disco duro C. 3. Cree en MySQL la base de datos de nombre Comunas. 4. De acuerdo a los talleres del 1 al 3, defina los ndices, llaves primarias y llaves externas. 5. Defina los tipos de datos de acuerdo a la informacin que pretende contener cada tabla. 6. Establezca las relaciones pertinentes entre la tabla comuna y barrios. 7. Exija integridad referencial y verifquela ingresando datos en ambas tablas. Intente ingresar los datos de un barrio cuyo CodigoBarrio no se encuentre en la tabla Comuna. 8. Active la actualizacin en cascada, ingrese varios barrios para una misma comuna, luego modifique el CodigoComuna en la tabla comuna y constate la actualizacin en cascada en la tabla barrios. 9. Active la eliminacin en cascada, ingrese varios barrios para una misma comuna, luego elimine el registro de la comuna en la tabla comuna y constate la eliminacin de todas las referencias a esa comuna en la tabla barrios. Industria y productos qumicos 1. Realice el mismo ejercicio anterior (Barrios y Comunas) para las tablas Industria y Productos qumicos. 2. Guarde la base de datos con el nombre Industrias en una carpeta de nombre Industrias ubicada en el disco duro C Industria, Puntos de descarga, Descarga y Muestra 3. Realice el ejercicio anterior (Barrios y Comunas) para las tablas Industria, Puntos de descarga, Descarga y Muestra 4. Guarde la base de datos con el nombre Fbricas en una carpeta de nombre Fbricas ubicada en el disco duro C Sistema Control de Industrias Completo 1. Desarrolle en MySQL todo el Sistema Completo tal que se detalla en el Modelo Lgico. 2. Cree la base de datos y asgnele el nombre Control_de_Industrias. 3. Cuide de especificar todos los ndices, las llaves primarias y llaves externas, mirando bien cuales son Si con duplicados y cuales son Si sin duplicados. 4. Establezca las relaciones entre las tablas y exija integridad referencial y comprubela en cada pareja de tablas. 5. Establezca actualizacin en cascada y eliminacin en cascada y verifquelo en cada pareja de tablas relacionadas.

Pgina 5 de 23

TALLER EN CLASE N 5 Control de Industrias QUIZ de comprobacin de Fundamentos

CODIGO: ______________________ ASIGNATURA: ______________________________________________ NOMBRES COMPLETOS _____________________________________________________________________ FECHA:________________________

En el Modelo que se muestra, se conoce la siguiente informacin: 1. Cada industria posee un identificante nico denominado Id_Industria, es decir que no existen dos industrias con el mismo Id_Industria. Productos Qumicos 2. Cada producto qumico posee un identificante nico denominado Id_Producto Nombre Id_Producto, es decir que no existen dos productos con el mismo Id_Producto Cantidad 3. Cada industria emplea diferentes productos qumicos. Forma
Id_Industria

Con base en lo anterior analice y responda:


1,1

1. Qu tipo de Indices deben ser los campos Id_Industria, en la tabla industria y Id_Producto, en la tabla Productos Qumicos y por qu. 2. Qu tipo de ndice es el campo Id_Industria en la tabla Productos Qumicos y por qu 1,n 3. Qu tipo de relacin se debe establecer entre las dos tablas y por qu. 4. Si se exige Integridad Referencial y se establece Actualizacin en Cascada, Industria que le sucede al campo Id_Industria en los Registros de la tabla Productos Id_Industria Nombre Qumicos, si se realiza una correccin al campo correspondiente Id_Industria en Direccin la tabla Industria. 5. Si se exige Integridad Referencial y se establece Eliminacin en Cascada, que le sucede a los Registros de la tabla Productos Qumicos cuyo campo Id_Industria tenga el mismo valor al campo Id_Industria en la tabla Industria.

Pgina 6 de 23

TALLER EN CLASE N 5 Control de Industrias QUIZ de comprobacin de Fundamentos

CODIGO: ______________________ ASIGNATURA: ______________________________________________ NOMBRES COMPLETOS _____________________________________________________________________ FECHA:________________________

En el Modelo que se muestra, se conoce la siguiente informacin: 1. Cada industria posee un identificante nico denominado Id_Industria, es decir que no existen dos industrias con el mismo Id_Industria. 2. Cada Punto de Descarga posee un identificante nico denominado Industria Id_PtoDescarga, es decir que no existen dos puntos de Descarga con el mismo Id_Industria Id_PtoDescarga Nombre 3. Cada industria tiene varios puntos de descarga. Direccin
1,n

1,1
Puntos de Descarga Id_PtoDescarga Direccin Ubicacin Tipo Id_Industria

Con base en lo anterior analice y responda: 1. Qu tipo de Indices deben ser los campos Id_Industria, en la tabla industria y Id_PtoDescarga, en la tabla Puntos de Descarga y por qu. 2. Qu tipo de ndice es el campo Id_Industria en la tabla Puntos de Descarga y por qu. 3. Qu tipo de relacin se debe establecer entre las dos tablas y por qu. 4. Si se exige Integridad Referencial y se establece Actualizacin en Cascada, que le sucede al campo Id_Industria en los Registros de la tabla Puntos de Descarga, si se realiza una correccin al campo correspondiente Id_Industria en la tabla Industria. 5. Si se exige Integridad Referencial y se establece Eliminacin en Cascada, que le sucede a los Registros de la tabla Puntos de Descarga cuyo campo Id_Industria tenga el mismo valor al campo Id_Industria en la tabla Industria.

Pgina 7 de 23

INTEGRIDAD REFERENCIAL Y MYSQL


CONTROL DE INDUSTRIAS
EJERCICIO DE MODELACION

CREAR LA BASE DE DATOS: FABRICAS CREATE DATABASE Fabricas; CREAR LA TABLA COMUNA

CREATE TABLE Comunas (


CodigoComuna INT NOT NULL, Poblacion INT NULL , Mortalidad INT NULL , PRIMARY KEY (CodigoComuna) );
CREAR LA TABLA BARRIO, RELACIONADA CON LA TABLA COMUNA Y CON INTEGRIDAD REFERENCIAL POR MEDIO DEL CAMPO CodigoComuna La siguiente instruccin admite eliminacin pero restringe la eliminacin en cascada

CREATE TABLE Barrios (


CodigoBarrio INT NOT NULL, Nombre VARCHAR( 30 ) NOT NULL , Poblacion INT NULL , NoViviendas INT NULL , NoComercios INT NULL , CodigoComuna INT NOT NULL, PRIMARY KEY(CodigoBarrio),

INDEX (CodigoComuna), FOREIGN KEY (CodigoComuna) REFERENCES Comunas (CodigoComuna) ON UPDATE CASCADE ON DELETE RESTRICT);
La siguiente instruccin admite eliminacin y admite la eliminacin en cascada

CREATE TABLE Barrios (


CodigoBarrio INT NOT NULL , Nombre VARCHAR( 30 ) NULL , Poblacion INT NULL , NoViviendas INT NULL , NoComercios INT NULL , CodigoComuna INT NOT NULL, PRIMARY KEY(CodigoBarrio),

INDEX (CodigoComuna), FOREIGN KEY (CodigoComuna) REFERENCES Comunas (CodigoComuna) ON UPDATE CASCADE ON DELETE CASCADE);

Pgina 8 de 23

CREAR LA TABLA INDUSTRIA COMO HIJA DE LA TABLA BARRIO CON INTEGRIDAD REFERENCIAL Y ACTUALIZACION Y ELIMINACION EN CASCADA

CREATE TABLE Industrias (


Id_Industria INT NOT NULL, Nombre VARCHAR( 30 ) NULL , Direccin VARCHAR( 30 ) NULL , CodigoBarrio INT NOT NULL,

PRIMARY KEY(Id_Industria), INDEX (CodigoBarrio), FOREIGN KEY (CodigoBarrio) REFERENCES Barrios (CodigoBarrio) ON UPDATE CASCADE ON DELETE CASCADE);
CREAR LA TABLA PRODUCTOS QUIMICOS

CREATE TABLE ProductosQ (


Id_Producto INT NOT NULL , Nombre VARCHAR( 30 ) NULL , Cantidad INT NULL , Forma VARCHAR(10) NULL , Id_Industria INT NOT NULL,

PRIMARY KEY(Id_Producto), INDEX (Id_Industria), FOREIGN KEY (Id_Industria) REFERENCES Industrias (Id_Industria) ON UPDATE CASCADE ON DELETE CASCADE);
CREAR LA TABLA PUNTOS DE DESCARGA

CREATE TABLE PuntosD(


Id_PtoDescarga INT NOT NULL, Direccin VARCHAR( 30 ) NULL , Ubicacin VARCHAR( 30 ) NULL , Tipo VARCHAR( 10 ) NULL , Id_Industria INT NOT NULL , PRIMARY KEY ( Id_PtoDescarga ) , INDEX ( Id_Industria ) , FOREIGN KEY ( Id_Industria ) REFERENCES Industrias( Id_Industria ) ON UPDATE CASCADE ON DELETE CASCADE);

Pgina 9 de 23

CREAR LA TABLA DESCARGAS

CREATE TABLE Descargas(


Id_Descarga INT NOT NULL , Horario TIME NULL , Id_PtoDescarga INT NOT NULL , PRIMARY KEY (Id_Descarga) , INDEX (Id_PtoDescarga) , FOREIGN KEY (Id_PtoDescarga) REFERENCES PuntosD(Id_PtoDescarga) ON UPDATE CASCADE ON DELETE CASCADE); CREAR LA TABLA MUESTRAS

CREATE TABLE Muestras(


Id_Muestra INT NOT NULL , Fecha DATE NULL , Caudal DOUBLE NULL, DBO DOUBLE NULL, DQO DOUBLE NULL, MS DOUBLE NULL, Id_Descarga INT NOT NULL , PRIMARY KEY (Id_Muestra) , INDEX (Id_Descarga) , FOREIGN KEY (Id_Descarga) REFERENCES Descargas(Id_Descarga) ON UPDATE CASCADE ON DELETE CASCADE);

Pgina 10 de 23

PROGRAMACION DEL CONECTOR NET Traducido de: MySQL Connector/Net INTRODUCCION En esta seccin se ofrece una pequea introduccin a la programacin con el Connector /NET. El cdigo de ejemplo est escrito en C#, y est diseado para funcionar tanto en Microsoft. NET Framework y Mono. Este tutorial est diseado para desarrollar con el Connector/NET tanto como sea posible, este tutorial no entra en detalles sobre los temas en particular. Sin embargo, en las siguientes secciones de este manual se describen con ms detalle cada uno de los temas introducidos en este tutorial. En este tutorial se le anima a escribir y ejecutar el cdigo, modificarlo segn sea necesario para su configuracin. Este tutorial asume que MySQL y el Connector/NET ya estn instalados. Los siguientes son los programas que requiere instalar: 1) Instale MySQL con el paquete xammp. Puede descargar el instalador en la siguiente pgina: http://www.apachefriends.org/en/xampp-windows.html 2) Instale el conector NET para MySQL. Puede descargar el intslador en la siguiente pgina: http://dev.mysql.com/downloads/connector/net. Descargue donde dice: Windows (x86, 32-bit),
MSI Installer

3) Instale el Entorno Integrado de Desarrollo SharpDevelop. Puede descargar el instalador en la siguiente pgina: http://www.icsharpcode.net/OpenSource/SD/Download/#SharpDevelop3x. La versin 3.2 requiere por lo menos el Microsoft .NET Framework 3.5 que puede descargar en la pgina: http://www.microsoft.com/downloads/es-es/details.aspx?familyid=ab99342f-5d1a-413d8319-81da479ab0d7&displaylang=es. Nota: Antes de compilar el cdigo de ejemplo debe asegurarse de que se han aadido las referencias a su proyecto segn sea necesario. Las referencias requeridas son: System, System.Data, y MySql.Data. En el caso de SharpDevelop las dos primeras ya se encuentran establecidas por defecto y slo faltara aadir la referencia a MySql.Data, la cual requiere previamente la instalacin de la dll de MySQL. La siguiente es la secuencia para establecer la referencia de MySql.Data en un nuevo proyecto WindowsSharpDevelop:

Pgina 11 de 23

Pgina 12 de 23

Luego de establecida la referencia, en nuestro nuevo proyecto, slo resta establecer las directivas using, en nuestro cdigo, lo cual se hace agregando las dos siguientes lneas en la seccin de declaraciones de nuestro cdigo:
using MySql.Data; using MySql.Data.MySqlClient;

El aspecto de nuestro cdigo debera ser similar a la siguiente figura:

Ahora todo esta listo para comenzar nuestro tutorial, comencemos con el objeto MySqlConnection. El Objeto MySqlConnection Para que su aplicacin Connector/NET pueda conectarse a una base de datos de MySQL lo que necesita es establecer una conexin. Esto se logra mediante el uso del objeto MySqlConnection. El constructor del objeto MySqlConnection toma una cadena de conexin como uno de sus parmetros. La cadena de conexin proporciona la informacin necesaria para realizar la conexin a la base de datos MySQL. CREANDO UNA CADENA DE CONEXIN. El objeto MySqlConnection es configurado utilizando una cadena de conexin. Una cadena de conexin contiene parejas de Clave/Valor del servidor, separadas por punto y coma. Cada par Clave/Valor se une con un signo igual. El siguiente es un ejemplo de cadena de conexin: Server=127.0.0.1;Uid=root;Pwd=12345;Database=mysql;

Pgina 13 de 23

En este ejemplo, el objeto MySqlConnection est configurado para conectarse a un servidor MySQL en la direccin IP: 127.0.0.1, con un nombre de usuario root y la contrasea 12345. La base de datos por defecto para todas las declaraciones sern la base de datos mysql. Abriendo una conexin Una vez que haya creado una cadena de conexin, sta puede ser utilizada para abrir una conexin hacia el servidor de MySQL. El siguiente cdigo (en SharpDevelop) muestra cmo crear una conexin a un servidor de MySql a travs de un objeto MySqlConnection a una base de datos de nombre mysql. El ejemplo supone la existencia de una base de datos mysql en un servidor sin contrasea.
using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace ejemplo1 { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } void MainFormLoad(object sender, EventArgs e) { string connStr = "server=localhost;" + "user=root;" + "database=mysql;" + "port=3306;password=;"; MySqlConnection conn = new MySqlConnection(connStr); try { conn.Open(); MessageBox.Show("Conexin Exitosa"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } conn.Close(); } } }

Observe que el cdigo de conexin se escribe en el evento Load del formulario (void MainFormLoad(object sender, EventArgs e)). Para hacer esto haga siga el siguiente procedimiento: 1) Haga clic en Diseo, para mostrar el formulario. Observe que al mostrarse el formulario debe aparecer del lado derecho en la ventana de propiedades el nombre del formulario con un listado de propiedades. Si no ve la ventana de propiedades, puede hacer que aparezca pulsando la tecla de funcin F4.

Pgina 14 de 23 2) En la cabecera de la ventana de propiedades aparece el botn con icono de rayo llamado eventos.

Haga clic en el botn eventos y observe que aparece resaltado el evento Load 3) De doble clic en el evento load y observe que aparece en el cdigo el bloque de cdigo del evento Load. A continuacin se muestra una secuencia grfica de este procedimiento:

El cdigo que se debe escribir en el evento Load del formulario es el siguiente:


string connStr = "server=localhost;" + "user=root;" + "database=mysql;" + "port=3306;password=;"; MySqlConnection conn = new MySqlConnection(connStr);

Pgina 15 de 23 try { conn.Open(); MessageBox.Show("Conexin Exitosa"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } conn.Close();

Las siguientes son las partes y funcionalidades del cdigo anterior: CADENA DE CONEXIN
string connStr = "server=localhost;" + "user=root;" + "database=mysql;" + "port=3306;password=;";

OBJETO MySqlConnection. Definicin e instancia del objeto MySqlConnection conn


MySqlConnection conn = new MySqlConnection(connStr);

BLOQUE TRY
try { conn.Open(); MessageBox.Show("Conexin Exitosa"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); }

METODO OPEN Y MENSAJE DE CONEXIN EXITOSA


conn.Open(); MessageBox.Show("Conexin Exitosa");

METODO CLOSE
conn.Close();

EL OBJETO MySqlCommand Una vez que ha establecido la conexin con la base de datos MySQL, el siguiente paso es llevar a cabo las operaciones deseadas contra las bases de datos. Esto puede lograrse mediante el uso del objeto MySqlCommand. Una vez que el objeto MySqlCommand se ha creado hay tres mtodos principales de inters que puede llamar: 1) ExecuteReader Utilizado para consultar la Base de datos. Los resultados son usualmente retornados en un objeto MySqlDataReader, creado por el mtodo ExecuteReader. 2) ExecuteNonQuery - Utilizado para insertar y eliminar datos. 3) ExecuteScalar - Utilizado para retornar un solo valor.

Pgina 16 de 23

Una vez que un objeto MySqlCommand se ha creado, usted llamar a uno de los mtodos anteriores sobre l, para llevar a cabo una operacin contra la base de datos, tal como realizar una consulta. Los resultados se devuelven en un objeto MySqlDataReader, y luego estos resultados pueden ser procesados, por ejemplo los resultados podran ser mostrados por la consola. El cdigo siguiente, es una aplicacin de consola y muestra cmo esto se podra hacer (Utilizando el mtodo ExecuteReader). NOTA: No olvide primeramente aadir la referencia a MySql.Data, la cual requiere previamente la instalacin de la dll de MySQL (vea la explicacin anterior).
using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; public class Tutorial2 { public static void Main() { string connStr = "server=localhost; + user=root; + database=sincelejo; + port=3306; + password=;"; MySqlConnection conn = new MySqlConnection(connStr); try { Console.WriteLine("Connectndose al servidor de MySQL..."); conn.Open(); string sql = "SELECT id_comu, comuna_comu FROM comunas"; MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { Console.WriteLine(rdr[0]+" -- "+rdr[1]); } rdr.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } conn.Close(); Console.WriteLine("Hecho."); } }

Para que pueda funcionar el cdigo anterior, el servidor de MySql debe contener una base de datos de nombre sincelejo con dos tablas: comunas y barrios. El siguiente es el script para crear la base de datos y las tablas mencionadas: CREATE DATABASE Sincelejo; USE Sincelejo; CREATE TABLE IF NOT EXISTS `comunas` ( `id_comu` int(10) unsigned NOT NULL AUTO_INCREMENT,

Pgina 17 de 23

`comuna_comu` varchar(50) NOT NULL, PRIMARY KEY (`id_comu`) ) ; INSERT INTO `comunas` (`id_comu`, `comuna_comu`) VALUES (1, 'Comuna No. 1 - NorOeste'), (2, 'Comuna No. 2 - Oeste'), (3, 'Comuna No. 3 - SurOeste'), (4, 'Comuna No. 4 - Central-Oeste'), (5, 'Comuna No. 5 - Central'), (6, 'Comuna No. 6 - Norte'), (7, 'Comuna No. 7 - NorEste'), (8, 'Comuna No. 8 - Sur'), (9, 'Comuna No. 9 - SurEste'); CREATE TABLE IF NOT EXISTS `barrios` ( `id_barr` int(10) unsigned NOT NULL AUTO_INCREMENT, `barrio_barr` varchar(200) NOT NULL, `id_comu` int(10) unsigned NOT NULL, PRIMARY KEY (`id_barr`), KEY `id_comu` (`id_comu`) );

INSERT INTO `barrios` (`id_barr`, `barrio_barr`, `id_comu`) VALUES (1, 'Divino Salvador I', 1), (2, 'La Pollita', 1), (3, 'Todo Poderoso', 1), (4, 'Divino Salvador II', 1), (5, 'Los Laureles', 1), (6, 'El Ruby', 1), (7, 'Villa Orieta', 1), (8, '2 De Septiembre', 1), (9, 'Media luna', 1), (10, 'La Estrella', 1), (11, 'San Rafael', 1), (12, 'Pablo VI', 1), (13, 'Las Canarias', 1), (14, 'Vallejo', 1), (15, 'Villa Paz', 1), (16, 'La Selva', 1), (17, 'Ciudad Sat?lite', 1), (18, 'Virgen Del Carmen', 1), (19, 'Punto Norte', 2), (20, 'F?tima', 2), (21, 'San Francisco', 2), (22, 'Sevilla', 2), (23, 'Sevilla', 2), (24, 'Sevilla', 2), (25, 'Bongo', 2),

Pgina 18 de 23

(26, 'Cruz De Mayo', 2), (27, 'San Carlos', 2), (28, 'Santa Mar', 2), (29, 'Kennedy', 2), (30, 'Chadid', 2), (31, 'URB. Bitar', 2), (32, 'Olimpo ', 2), (33, 'Ipanema', 2), (34, 'Calle del Campo', 2), (35, 'Pinar', 2), (36, 'Camilo Torres', 2), (37, 'La Bucaramanga', 2), (38, 'Cerrito Colorado', 2), (39, 'Calle Sucre', 2), (40, 'Calle Para?so', 2), (41, 'Villa Suiza', 3), (42, 'Villa Ana', 3), (43, 'Los Tejares', 3), (44, 'Las Colinas', 3), (45, 'La Bastilla', 3), (46, 'Rita Arrazola', 3), (47, 'Dos de Febrero', 3), (48, 'Barlovento', 3), (49, 'Pioneros II', 3), (50, 'Pioneros', 3), (51, 'La Terraza', 3), (52, 'Candelaria', 3), (53, 'Caribe', 3), (54, 'Gait?n II', 3), (55, 'Gait', 3), (56, 'Las Delicias', 3), (57, 'Cortijo', 3), (58, 'Argelia', 3), (59, 'Las Gaviotas', 3), (60, 'Esperanza', 3), (61, '20 de Enero', 3), (62, 'Independencia', 3), (63, 'El Maizal', 3), (64, 'Sina', 3), (65, 'Nuevo Bol?var', 3), (66, 'Bol?var', 3), (67, 'El Brujo', 3), (68, 'El Cinco', 3), (69, '20 de Julio', 4), (70, 'California', 4), (71, 'Chacuri', 4), (72, 'Puerto Escondido', 4), (73, 'Bololo', 4), (74, 'San Jos', 4), (75, 'Los Libertadores', 4), (76, 'La Pajuela', 4),

Pgina 19 de 23

(77, 'Mochila', 4), (78, 'Las Am?ricas', 4), (79, 'Santa Fe', 4), (80, 'Pasa Corriendo', 4), (81, 'Nuevo Majagual', 4), (82, 'Corea', 4), (83, 'Majagual', 4), (84, 'Urbanizaci?n Central', 4), (85, 'Mara?on', 4), (86, 'Alfonso L?pez', 4), (87, 'Espa?a', 4), (88, 'El Zumbado', 4), (89, 'Carmen', 4), (90, 'Jos? Germ', 4), (91, 'Majagual', 4), (92, 'Nuevo M?jico', 4), (93, 'Las Mercedes', 4), (94, 'Narcisa', 4), (95, 'Puente', 4), (96, 'San Vicente', 4), (97, 'Las Palmas II', 5), (98, 'El Prado', 5), (99, 'La lucha', 5), (100, 'Los Bloques', 5), (101, 'Cuatro Vientos', 5), (102, 'Las Flores', 5), (103, 'La Palma', 5), (104, 'Ford', 5), (105, 'Petaca I', 5), (106, '7 de Agosto', 5), (107, 'Charconcito', 5), (108, 'Petaca II', 5), (109, 'Centro', 5), (110, 'San Antonio', 5), (111, 'Av. Las pe?itas', 5), (112, ' Palermo', 5), (113, 'Las Angustias', 5), (114, 'Buenos Aires', 5), (115, 'El Tendal', 5), (116, 'Cauca', 5), (117, 'La Mar', 5), (118, 'Ciudad Jard', 5), (119, 'Los Rosales', 6), (120, 'Villa Carmela', 6), (121, 'Cielo Azul', 6), (122, 'Altos Del Rosario', 6), (123, 'Ciudadela Universitaria I', 6), (124, 'Tierra Grata', 6), (125, 'Ciudadela universitaria II', 6), (126, 'Botero I', 6), (127, '17 de Septiembre', 6),

Pgina 20 de 23

(128, 'Botero II', 6), (129, 'La Vega', 6), (130, 'URB Universal 3', 6), (131, 'La fe', 6), (132, 'San Roque', 6), (133, 'Vida 1', 6), (134, '6 de Enero', 6), (135, 'La Esperanza', 6), (136, 'Versalles 2', 6), (137, 'San Luis', 6), (138, 'Vida 2', 6), (139, 'Versalles', 6), (140, 'El Cabrero', 6), (141, 'Cristo Viene', 6), (142, 'Villa Juana', 6), (143, 'El Mirador', 6), (144, 'Ciudadela Suiza', 6), (145, 'Puerta Roja', 7), (146, 'Villa Natalia', 7), (147, 'Libertad', 7), (148, 'Margaritas', 7), (149, 'Para?so', 7), (150, 'Porvenir', 7), (151, 'Margarita I', 7), (152, 'Dulce Nombre', 7), (153, 'Florencia I', 7), (154, 'URB: Caja Agraria', 7), (155, 'Florencia II ', 7), (156, 'Bosque', 7), (157, 'Nueva Venecia', 7), (158, 'Venecia 1 Etapa', 7), (159, 'La Toscana', 7), (160, 'Las pe?itas', 7), (161, 'El Socorro', 7), (162, 'Boston', 7), (163, 'Venecia', 7), (164, 'Villa Padua', 7), (165, 'Villa de la Serran', 7), (166, 'Sincelejito', 7), (167, 'Medell', 7), (168, 'Los Alpes', 7), (169, 'San Miguel', 7), (170, 'Cocuelo', 8), (171, 'Santa Marta', 8), (172, 'La Campi?a', 8), (173, '8 de Diciembre', 8), (174, 'La Victoria', 8), (175, 'La Manga', 8), (176, 'Bella Isla', 8), (177, 'Villa Mady', 8), (178, 'Sim?n Bol?var', 8),

Pgina 21 de 23

(179, 'Olaya Herrera', 8), (180, 'Divino Ni?o', 8), (181, 'Gran Colombia', 8), (182, 'La Esmeralda', 8), (183, 'Uribe', 8), (184, 'Uribe Uribe', 8), (185, 'Normand', 8), (186, 'Villa Mady 2da Etapa', 8), (187, 'Antonio Nari?o', 8), (188, 'Nueva Esperanza', 8), (189, 'La Paz', 8), (190, 'Minuto de Dios', 8), (191, ' Antonio Nari?o', 8), (192, 'Puerto Arturo', 8), (193, 'El Poblado', 8), (194, 'El Carrizal', 8), (195, 'Santa Cecilia', 9), (196, 'Aprodes', 9), (197, 'Mano de Dios', 9), (198, 'Bogot', 9), (199, 'Santa Cecilia II', 9), (200, 'Trinidad II', 9), (201, 'Verbel II', 9), (202, 'Trinidad', 9), (203, 'Verbel', 9), (204, 'Costa Azul', 9), (205, 'Progreso', 9), (206, 'Bella Vista', 9), (207, 'El Eden', 9);

EXPLICACIN DEL CDIGO QUE UTILIZ EL METODO ExecuteReader Cuando la conexin fue sido creada y abierta, el cdigo crea entonces un objeto MySqlCommand. Ntese que la consulta SQL a ser ejecutada es pasada al constructor del objeto MySqlCommand, esto se realiz en las siguientes lneas de cdigo:
string sql = "SELECT id_comu, comuna_comu FROM comunas"; MySqlCommand cmd = new MySqlCommand(sql, conn);

Luego el mtodo ExecuteReader() es invocado para generar un objeto MySqlReader. Esto se hiz en la siguiente lnea de cdigo:
MySqlDataReader rdr = cmd.ExecuteReader();

Despus de la ejecucin de la lnea anterior, el objeto MySqlDataReader, rdr, contiene los resultados generados por la consulta Sql ejecutada sobre el objeto MySqlCommand, cmd.

Pgina 22 de 23

Una vez los resultados han sido obtenidos en el objeto MySqlDataReader, rdr, los resultados son procesados. En nuestro caso la informacin es simplemente impresa por consola como parte de un ciclo While Loop.
while (rdr.Read()) { Console.WriteLine(rdr[0]+" -- "+rdr[1]); }

Finalmente el objeto MySqlDataReader, rdr, es destruido ejecutando su mtodo Close().


rdr.Close();

UTILIZACION DEL METODO ExecuteNonQuery En el ejemplo siguiente ver cmo utilizar el mtodo ExecuteNonQuery. El procedimiento para realizar una llamada al mtodo ExecuteNonQuery es ms sencillo, ya que no hay necesidad de crear un objeto para almacenar los resultados. Esto es debido a que ExecuteNonQuery slo se utiliza para insertar, actualizar y borrar datos. El siguiente ejemplo ilustra la creacin de la base de datos sincelejo y la creacin de la tabla comuna: Puede guiarse observando el script completo de la creacin de la base de datos sincelejo que se mostr anteriormente. Tomaremos, para realizar nuestro ejercicio, solamente una parte de todo el script, es decir, la parte de las sentencias Sql que corresponden a la creacin de la base de datos Sincelejo, la creacin de la tabla comunas y la insercin de los datos en la tabla comunas. La parte del script que realiza esto, nos servir para desarrollar nuestro cdigo que utilizar el mtodo ExecuteNonQuery. La parte del script se muestra a continuacin: CREATE DATABASE Sincelejo; USE Sincelejo; CREATE TABLE IF NOT EXISTS `comunas` ( `id_comu` int(10) unsigned NOT NULL AUTO_INCREMENT, `comuna_comu` varchar(50) NOT NULL, PRIMARY KEY (`id_comu`) ) ; INSERT INTO (1, 'Comuna (2, 'Comuna (3, 'Comuna (4, 'Comuna (5, 'Comuna (6, 'Comuna (7, 'Comuna (8, 'Comuna (9, 'Comuna `comunas` (`id_comu`, `comuna_comu`) VALUES No. 1 - NorOeste'), No. 2 - Oeste'), No. 3 - SurOeste'), No. 4 - Central-Oeste'), No. 5 - Central'), No. 6 - Norte'), No. 7 - NorEste'), No. 8 - Sur'), No. 9 - SurEste');

Lo nico que debe hacer nuestro cdigo C#, es incrustar el script anterior y lanzarlo como parmetro en el objeto MySqlCommand, para finalmente llamar el mtodo ExecuteNonQuery.

Pgina 23 de 23

Proceda a crear una solucin del tipo aplicacin de windows y pngale por nombre CrearBD, como se muestra a continuacin:

Establesca las referencias al conector de MySql y luego establesca las dos directivas using:

Вам также может понравиться