optativa_ii_practica_7_conexion_y_manejo_de_bd

Anuncio
Practica 7 Conexión a su base de datos.
Optativa II
1. Inicie sesión en su manejador de base de datos y agregue los procedimientos de almacenados mediante los cuales manejaremos las tablas
agregadas en la práctica anterior.
2. Colóquese en su base de datos.
•
•
En la sección de Programmability
Agregue un nuevo “Stored Procedure”
Practica 7 Conexión a su base de datos.
Optativa II
4. Agregue primero el “sp_bloques”
USE [db_prision]
GO
/****** Object: StoredProcedure [dbo].[sp_bloques]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE procedure [dbo].[sp_bloques]
@accion int,
@Id_Bloque int=null,
@Capacidad int=null,
@Descripcion varchar(50)=''
Script Date: 09/03/2014 11:04:39 ******/
as
--accion para insertar bloques
if @accion=1
begin
insert into Tbl_Bloque values (@Capacidad,@Descripcion)
end
--accion para eliminar bloques
if @accion=2
begin
delete Tbl_Bloque where Id_Bloque=@Id_Bloque
end
--accion para actualizar
if @accion=3
begin
update Tbl_Bloque set Capacidad=@Capacidad,Descripcion=@Descripcion where Id_Bloque=@Id_Bloque
end
--accion para buscar por id
if @accion=4
begin
select * from Tbl_Bloque where Id_Bloque=@Id_Bloque
end
Practica 7 Conexión a su base de datos.
Optativa II
Ejecútelo
5. Ya que tiene creado los SP para su base datos, es momento de agregar en la capa de datos las clases encargadas de manejarlas. Crearemos la
Clase encargada manejar la conexión con SQL en este caso, agregale dentro del repositorio de “Datos”
class Conexion_sql
{
/// <summary>
/// Cadena de Conexion a SQL
/// </summary>
private SqlConnection cn;
static string Server = @"(local)";
static string User = "uprision";
static string Pass = "123456";
static string BD = "db_prision";
public Conexion_sql()
{
try
{
this.CrearConexion(Server, User, Pass, BD);
this.AbirConexion();
}
catch (Exception ex)
{
}
}
/// <summary>
Practica 7 Conexión a su base de datos.
Optativa II
/// metodo para conectarse a su base de datos
/// </summary>
/// <param name="Servidor"></param>
/// <param name="Usuario"></param>
/// <param name="PassWord"></param>
/// <param name="NombreBase"></param>
private void CrearConexion(String servidor, String usuario, String passWord, String nombreBase)
{
string cadena = "Server =" + servidor + "; uid =" + usuario + "; pwd=" + passWord + "; database= " + nombreBase;
this.cn = new SqlConnection(cadena);
}
private void AbirConexion()
{
this.cn.Open();
}
public void ConexClose()
{
this.cn.Close();
}
public DataTable ExecuteSp(string sp, List<SqlParameter> args)
{
//int i = 0;
DataTable dt = new DataTable();
SqlCommand cmd;
cmd = new SqlCommand(sp, this.cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(args.ToArray());
//new SqlDataAdapter(cmd).Fill(dt);
SqlDataAdapter dta = new SqlDataAdapter(cmd);
dta.Fill(dt);
return dt;
}
}
Practica 7 Conexión a su base de datos.
Optativa II
6. Ahora necesitamos crear la clase que manejara los objetos del negocio en la base de datos, dentro del mismo repositorio de Datos Agregue la
clase BloqueBD.
class BloqueBD
{
/// <summary>
/// metodo para consultar bloque por id
/// </summary>
/// <returns></returns>
public Bloque ConsultarBloque(int id)
{
//instancia el objeto que regresara
Bloque obbloque = new Bloque();
try
{
{
};
}
//intancia la lista de parametros que recibe el procedimiento
List<SqlParameter> param = new List<SqlParameter>()
//se agregan los valores de los parametros
new SqlParameter("@accion", 4),
new SqlParameter("@Id_Bloque",id)
//se ejecuta el procedimieno
DataTable registro = new Conexion_sql().ExecuteSp("sp_bloques", param);
//se llena el objeto a regresar
foreach (DataRow fila in registro.Rows)
{
obbloque.IdBloque = Convert.ToInt32(fila["Id_Bloque"].ToString());
obbloque.capacitad = Convert.ToInt32(fila["Capacidad"].ToString());
obbloque.descripcion = fila["Descripcion"].ToString();
}
}
catch (Exception ex)
{
obbloque=null;
}
return obbloque;
Practica 7 Conexión a su base de datos.
Optativa II
/// <summary>
/// metodo para borrar bloque
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool BorrarBloque(int id)
{
bool correcto;
try
{
//intancia la lista de parametros que recibe el procedimiento
List<SqlParameter> param = new List<SqlParameter>()
{
//se agregan los valores de los parametros
new SqlParameter("@accion", 2),
new SqlParameter("@Id_Bloque",id)
};
//se ejecuta el procedimieno
DataTable registro = new Conexion_sql().ExecuteSp("sp_bloques", param);
//se llena el objeto a regresar
correcto = true;
}
catch (Exception ex)
{
correcto = false;
}
return correcto;
}
/// <summary>
/// Metodo para actualizar un bloque
/// </summary>
/// <param name="id"></param>
/// <param name="descripcion"></param>
/// <param name="capacidad"></param>
/// <returns></returns>
public bool ActualizarBloquee(int id, string descripcion, int capacidad)
{
bool correcto;
Practica 7 Conexión a su base de datos.
Optativa II
try
{
//intancia la lista de parametros que recibe el procedimiento
List<SqlParameter> param = new List<SqlParameter>()
{
new
new
new
new
}
//se agregan los valores de los parametros
SqlParameter("@accion", 3),
SqlParameter("@Id_Bloque",id),
SqlParameter("@Capacidad", capacidad),
SqlParameter("@Descripcion",descripcion)
};
//se ejecuta el procedimieno
DataTable registro = new Conexion_sql().ExecuteSp("sp_bloques", param);
//se llena el objeto a regresar
correcto = true;
catch (Exception ex)
{
correcto = false;
}
return correcto;
}
public bool AgregarBloque(string descripcion, int capacidad)
{
bool correcto;
try
{
//intancia la lista de parametros que recibe el procedimiento
List<SqlParameter> param = new List<SqlParameter>()
{
//se agregan los valores de los parametros
new SqlParameter("@accion", 1),
new SqlParameter("@Capacidad", capacidad),
new SqlParameter("@Descripcion",descripcion)
Practica 7 Conexión a su base de datos.
Optativa II
}
}
}
};
//se ejecuta el procedimieno
DataTable registro = new Conexion_sql().ExecuteSp("sp_bloques", param);
//se llena el objeto a regresar
correcto = true;
catch (Exception ex)
{
correcto = false;
}
return correcto;
7. Dentro del directorio de presentación vamos agregar una clase de servicio para los validadores de datos, los cuales podremos reusar en los
campos de todos los campos que se necesiten en las otras formas, agregue una nueva clase y utilice los métodos que se muestran a continuación
/// <summary>
/// Esta Clase presenta metodos de servicio comunes utilizados en la capa de presentacion
/// </summary>
class Servicio
{
/// <summary>
/// Metodo para validar el evento KeyPress
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void KeyPressValida(object sender, KeyPressEventArgs e)
{
if (char.IsLetter(e.KeyChar) ||
char.IsSymbol(e.KeyChar) ||
char.IsWhiteSpace(e.KeyChar) ||
char.IsPunctuation(e.KeyChar))
e.Handled = true;
}
Practica 7 Conexión a su base de datos.
Optativa II
/// <summary>
/// Metodo para validar el portapapeles con KeyDown
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void keyDownvalidaPortapapeles(object sender, KeyEventArgs e)
{
//Allow navigation keyboard arrows
switch (e.KeyCode)
{
case Keys.Up:
case Keys.Down:
case Keys.Left:
case Keys.Right:
case Keys.PageUp:
case Keys.PageDown:
case Keys.Delete:
e.SuppressKeyPress = false;
return;
default:
break;
}
//Block non-number characters
char currentKey = (char)e.KeyCode;
bool modifier = e.Control || e.Alt || e.Shift;
bool nonNumber = char.IsLetter(currentKey) ||
char.IsSymbol(currentKey) ||
char.IsWhiteSpace(currentKey) ||
char.IsPunctuation(currentKey);
if (!modifier && nonNumber)
e.SuppressKeyPress = true;
//Handle pasted Text
if (e.Control && e.KeyCode == Keys.V)
{
//Preview paste data (removing non-number characters)
Practica 7 Conexión a su base de datos.
Optativa II
string pasteText = Clipboard.GetText();
string strippedText = "";
for (int i = 0; i < pasteText.Length; i++)
{
if (char.IsDigit(pasteText[i]))
strippedText += pasteText[i].ToString();
}
if (strippedText != pasteText)
{
//There were non-numbers in the pasted text
e.SuppressKeyPress = true;
}
else
}
}
}
//OPTIONAL: Manually insert text stripped of non-numbers
TextBox me = (TextBox)sender;
int start = me.SelectionStart;
string newTxt = me.Text;
newTxt = newTxt.Remove(me.SelectionStart, me.SelectionLength); //remove highlighted text
newTxt = newTxt.Insert(me.SelectionStart, strippedText); //paste
me.Text = newTxt;
me.SelectionStart = start + strippedText.Length;
e.SuppressKeyPress = false;
Practica 7 Conexión a su base de datos.
Optativa II
8. Agregue un nuevo Windows Form para el manejo de bloques nómbrelo DispBloque, agregue los elemento que se muestran a
continuación
Practica 7 Conexión a su base de datos.
Optativa II
txtIdBloque
txtCapacidad
txtDescripcion
btnBuscar  Este botón buscara un elemento con el id recibido y lo mostrara en los campos de texto.
btnActualizar  Este botón actualizara un elemento con el id recibido y los demás parámetros.
btnEliminar  Este botón eliminara un documento con el id recibido.
btnAgregar  Este botón recibirá los campos necesarios para agregar un nuevo elemento.
Recuerde agregar la referencia a los paquetes de Datos y Negocio.
using practica4.Datos;
using practica4.Negocio;
Practica 7 Conexión a su base de datos.
Optativa II
BloqueBD
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using practica4.Negocio;
using System.Data.SqlClient;
using System.Data;
Conexion_sql
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Data;
System.Data.SqlTypes;
System.Data.SqlClient;
Servicio
using practica4.Datos;
using practica4.Negocio;
Practica 7 Conexión a su base de datos.
Optativa II
Botones eventos Click:
btnBuscar
BloqueBD bdbloque = new BloqueBD();
Bloque objeto = bdbloque.ConsultarBloque(Convert.ToInt32(txtIdBloque.Text));
if (objeto.IdBloque != 0)
{
txtCapacidad.Text = objeto.capacitad.ToString();
txtDescripcion.Text = objeto.descripcion;
}
else
{
MessageBox.Show("El bloque no existe");
}
btnActualizar
BloqueBD bdbloque = new BloqueBD();
Bloque objeto = bdbloque.ConsultarBloque(Convert.ToInt32(txtIdBloque.Text));
if (objeto.IdBloque != 0)
{
//mostramos un dialogo que solicita confirmar la accion
DialogResult result = MessageBox.Show("Deseas actualizar el bloque", "Bloques", MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning);
if (result == DialogResult.OK)
{
bdbloque.ActualizarBloquee(Convert.ToInt32(txtIdBloque.Text), txtDescripcion.Text,
Convert.ToInt32(txtCapacidad.Text));
MessageBox.Show("se actualizo el bloque");
}
else
Practica 7 Conexión a su base de datos.
Optativa II
{
}
}
else
{
}
MessageBox.Show("No se actualizo el bloque");
MessageBox.Show("El bloque no existe");
btnEliminar
// se crea la instancia del objeto bloqueBD
BloqueBD bdbloque = new BloqueBD();
// llena el bloque con el resultado del método que es del mismo valor
Bloque objeto = bdbloque.ConsultarBloque(Convert.ToInt32(txtIdBloque.Text));
//validamos si existe el bloque , si es igual a indica que no existe
if (objeto.IdBloque != 0)
{
//mostramos un dialogo que solicita confirmar la accion
DialogResult result = MessageBox.Show("Deseas borrar el bloque", "Bloques", MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning);
if (result == DialogResult.OK)
{
}
else
{
}
}
else
{
}
bdbloque.BorrarBloque(Convert.ToInt32(txtIdBloque.Text));
MessageBox.Show("se borro el bloque");
MessageBox.Show("No se borro el bloque");
MessageBox.Show("El bloque no existe");
Practica 7 Conexión a su base de datos.
Optativa II
btnAgregar
BloqueBD bdbloque = new BloqueBD();
//Bloque objeto = bdbloque.ConsultarBloque(Convert.ToInt32(txtIdBloque.Text));
//mostramos un dialogo que solicita confirmar la accion
DialogResult result = MessageBox.Show("Deseas agregar el bloque", "Bloques", MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning);
if (result == DialogResult.OK)
{
bdbloque.AgregarBloque(txtDescripcion.Text, Convert.ToInt32(txtCapacidad.Text));
}
else
{
}
MessageBox.Show("se agrego el bloque");
MessageBox.Show("No se agrego el bloque");
//recargamos la forma para limpiar y actualizar los campos en el grid
this.Close();
DispBloque dispBloques = new DispBloque(1);
dispBloques.Show();
Descargar