sql


– Ejercicio de Analisis Sustantivo/Verbo –

” Controlar inventario de articulos, entradas y salidas, quien y a que hora sucede el movimiento.  Cuando algun articulo llegue a cierta cantidad de inventario, se dara aviso al encargado.
Tambien se avisara (al encargado) cada dia de los 5 articulos con menor cantidad.
Todos los avisos se haran por correo electronico especificando nombre y cantidad del articulo. ”

[ Entregable (1) Modelo de clases ]

 == Verificacion de Modelo de clases ==

Ejercitar las siguientes peticiones SQL contra el modelo de clases elaborado de la situacion anterior:

SQL–
 
 * mostrar articulos con cantidad menor o igual a su cantidad minima
 * mostrar personas que han utilizado el articulo “Tornillo 1/4”
 * mostrar todos los movimientos de las ultimas 4 horas

[ Entregable (2) Sentencias SQL ]

Codigo para Clase

    Empezar el codigo para una clase identificada completando las declaraciones de miembros privados y propiedades publicas.

[ Entregable (3) Codigo para la clase ]

 

En un post posterior se proporcionaran posibles entregables…

Anuncios

SQL statements – Sentencias SQL

Durante clase estuvimos haciendo ejemplos de consultas a unas tablas ejemplo en internet.  La tabla bbc(name,region,population,gdp) y la tabla nobel(yr,subject,winner).  Ejercitamos el uso de las palabras de SQL ‘SELECT’, ‘FROM’, ‘WHERE’, ‘IN’, ‘LIKE’ y lo que cada una de ellas nos proporciona.  Aqui les muestro ejemplos de lo esperado para el proximo examen del martes

TABLA: Articulo(precio,descripcion,imagen,categoria,nombre)

 * mostrar los articulos que empiecen con “R” y no cuesten mas de 100 pesos
 * mostrar los articulos que pertenezcan a la categoria “Bebidas” que cuesten mas de 20 pesos

TABLA: Cliente(frc,ape_paterno,ape_materno,nombres,telefono)

 * mostrar nombre completo de cliente con apellido paterno “Lopez”
 * mostrar rfc de clientes con area de telefono 656

http://www.sql-tutorials.net/Select-Statement-Basics.php

http://www.sql-tutorials.net/Insert-Statement-Basics.php

este esta muy bueno… a ver si pueden contestar las preguntas…
http://sqlzoo.net/1.htm

saludos!

Administrador de Contactos> en esta sesion, agregamos un boton mas a nuestra aplicacion de contactos, con la finalidad de poder editar un contacto existente.

Ventana de Aplicacion

…con esto, se agregaron dos metodos al codigo de la forma:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

con este metodo manejamos el evento click del ListBox, y hacemos varias cosas:

– activamos el boton “actualizar”, deshabilitamos el boton “agregar”, y el TextBox para “email” (esto porque email es nuestro identificador unico y no permitiremos que se modifique).

el segundo metodo es:

private void button6_Click(object sender, EventArgs e)

en este metodo manejamos el click para el boton “actualizar”, y hacemos lo sig>:

– actualizamos en tabla los datos del contacto seleccionado; regresamos a los botones a su estado de “agregar”

—–

A continuacion el codigo completo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace uacj_Contactos
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
private void Form1_Load(object sender, EventArgs e)
  {
  displayContacts("1=1");
  }
private void displayContacts(string filtro) {
  listBox1.Items.Clear();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE ("+filtro+") ORDER BY nombre ASC");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read()) {
  listBox1.Items.Add(reader["nombre"].ToString() + " - " + reader["email"].ToString());
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }
private void button3_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%yahoo.com%'");
  }
private void button4_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%hotmail.com%'");
  }

private void button5_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%"+textBox3.Text+"%'");
  }

private void button1_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("INSERT INTO contactos (email,nombre) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button2_Click(object sender, EventArgs e)
  {
  string[] valores = listBox1.Text.Split('-');
  string email = valores[valores.Length-1].Trim();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("DELETE FROM contactos WHERE (email = '"+email+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button6_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand(
  "UPDATE contactos SET nombre = '" +
  textBox2.Text + "' WHERE (email = '" + textBox1.Text + "')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  textBox1.Enabled = true;
  button6.Enabled = false;
  button1.Enabled = true;
  textBox1.Text = "";
  textBox2.Text = "";

}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
  {
  button1.Enabled = false;
  button6.Enabled = true;
  textBox1.Enabled = false;
  string[] valores = listBox1.Text.Split('-');
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE (email = '"+valores[1].Trim()+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read())
  {
  textBox1.Text = reader["email"].ToString();
  textBox2.Text = reader["nombre"].ToString();
  // asi con cada columna de nuestro contacto...
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }
  }
}

descargar el proyecto: Proyecto Completo
Nota del archivo: es un .zip pero el blog no me lo acepto asi que lo renombre a .zip.gif; fovor de renombrarlo a .zip para poder extraer su contenido;
Nota 2: copiar la base de datos a C:, o bien, actualizar la ruta en el connectionString del OleDbConnection.

Disculpas por la tardanza... :P

En esta sesion vimos una introduccion al uso de bases de datos desde una aplicacion de windows en .NET; especificamente trabajamos con una base de datos en MSAccess.

Nos enfocamos a utilizar las clases OleDbConnection, OleDbCommand, y OleDbDataReader del nombre de espacio System.Data.OleDb.  Nuestra base de datos consta de una sola tabla llamada contactos, con dos campos (email, nombre):

Tabla Contactos

La aplicacion consta de una ventana (Form) similar a esta:

Forma Principal

Esta forma cuenta con..
una lista (ListBox) para desplegar el contenido de la tabla contactos,
2 cajas de texto (TextBox) para agregar un nuevo contacto,
metodos para filtrar el despliegue de contacto en la lista,
boton para borrar el contacto seleccionado.

El codigo detras de esta ventana es el siguiente:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace uacj_Contactos
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
private void Form1_Load(object sender, EventArgs e)
  {
  displayContacts("1=1");
  }
private void displayContacts(string filtro) {
  listBox1.Items.Clear();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("SELECT * FROM contactos WHERE ("+filtro+") ORDER BY nombre ASC");
  cmd.Connection = conn;
  cmd.Connection.Open();
  OleDbDataReader reader = cmd.ExecuteReader();
  while (reader.Read()) {
  listBox1.Items.Add(reader["nombre"].ToString() + " - " + reader["email"].ToString());
  }
  reader.Dispose();
  cmd.Dispose();
  conn.Dispose();
  }

private void button3_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%yahoo.com%'");
  }

private void button4_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%hotmail.com%'");
  }

private void button5_Click(object sender, EventArgs e)
  {
  displayContacts("email LIKE '%"+textBox3.Text+"%'");
  }

private void button1_Click(object sender, EventArgs e)
  {
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("INSERT INTO contactos (email,nombre) VALUES ('"+textBox1.Text+"','"+textBox2.Text+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }

private void button2_Click(object sender, EventArgs e)
  {
  string[] valores = listBox1.Text.Split('-');
  string email = valores[valores.Length-1].Trim();
  OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\\contactos.mdb");
  OleDbCommand cmd = new OleDbCommand("DELETE FROM contactos WHERE (email = '"+email+"')");
  cmd.Connection = conn;
  cmd.Connection.Open();
  cmd.ExecuteNonQuery();
  cmd.Dispose();
  conn.Dispose();
  displayContacts("1=1");
  }
  }
}

Material de ayuda:

– Proyecto de Visual Studio 2005 (contactos.mdb incluida) Proyecto completo
Nota del archivo: es un .zip pero el blog no me lo acepto asi que lo renombre a .zip.gif; fovor de renombrarlo a .zip para poder extraer su contenido;
Nota 2: copiar la base de datos a C:, o bien, actualizar la ruta en el connectionString del OleDbConnection.

– Ayuda para connectionStrings:  http://www.connectionstrings.com