Tener una bitácora nos ayuda a tener un mejor control de nuestra información:
- ver quien hace cambios por “error”
- ver la fecha
- tipo de operación (inserción, actualización y/o borrado)
Bueno he aquí los pasos para crear una pequeña bitácora
1. Crear la base de datos
create database prueba1;
show databases;
use prueba1;
2. Crear una tabla llamadas personas
create table personas (id_persona int auto_increment primary key, nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double);
3. Crear un procedimiento almacenado para insertar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Insertar` $$
CREATE PROCEDURE `prueba1`.`Insertar`(in nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double)
BEGIN
INSERT INTO personas (nombre,apellido_p, apellido_m , edad , peso , talla) VALUES (nombre,apellido_p, apellido_m , edad , peso , talla );
END $$
DELIMITER ;
4. Crear un procedimiento almacenado para actualizar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Actualizar` $$
CREATE PROCEDURE `prueba1`.`Actualizar` (in id_personax int,edadx int,pesox double)
BEGIN
update personas set edad=edadx,peso=pesox where id_persona=id_personax;
END $$
DELIMITER ;
5. Crear un procedimiento almacenado para eliminar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Borrar` $$
CREATE PROCEDURE `prueba1`.`Borrar` (in id int)
BEGIN
delete from personas where id_persona=id;
END $$
DELIMITER ;
6. Invocar los procedimientos almacenados
Call Insertar (‘Horacio’,’Gomez’,’Carmona’,25,65,1.68);
Call Insertar (‘Hugo’,’Torres’,’Mendez’,32,67,1.70);
Call Actualizar (1, 26, 66);
Call Borrar (2)
Ver registros
Select * from personas;
7. Crear un procedimiento almacenado que muestre todos los registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersonas` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersonas`()
select *from personas $$
DELIMITER ;
Para invocarlo
Call sp_verPersonas();
8. Crear tabla que lleve un control de quien hace cambios en la base de datos prueba1
CREATE TABLE infobase (usuario varchar (50), descripcion varchar (50),
fecha TIMESTAMP default now());
9. Crear trigger para la inserción
delimiter $$
create trigger tr_insercion
befote insert on personas
for each row
begin
insert into infobase values(user(),’persona creada’,now());
end $$
10. Crear trigger para la actualización
delimiter $$
create trigger tr_actualizacion
befote update on personas
for each row
begin
insert into infobase(usuario,descripcion,fecha) values(user(),’persona modificada’,now());
end $$
11. Crear trigger para la eliminación
delimiter $$
create trigger tr_borrado
befote delete on personas
for each row
begin
insert into infobase values(user(),’persona eliminada’,now());
end $$
Ver cambios
Select *from infobase;
12. Crear procedimiento almacenado para ver un registro en particular
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersona` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersona`(in id_buscar int)
select *from personas where id_persona=id_buscar $$
DELIMITER ;
13. Ahora hacer una operación: calcular el I.M.C. (Índice de Masa Corporal) de las personas registradas
Fórmula: peso/(talla*talla)
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verImc` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verImc`()
select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas $$
DELIMITER ;
14. Programa en Java para ver los registros
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
No hay comentarios:
Publicar un comentario