Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Base de Datos / Base de Datos / Java / Java / MySQL / Proyectos / Procedimientos almacenados en java

Procedimientos almacenados en java

Autor jc mouse lunes, marzo 5, 2012

En este tuto realizaremos la implementación y ejecución de procedimientos almacenados de MySQL en Java, si quieres darle un repaso a lo que son los “procedimientos en MySQL” te invito a que visites ese post.

¿Que necesitamos?

  • Java
  • Un DBMS (Gestor de Base de Datos) con MySQL
  • Conocimientos  básicos de SQL
  • IDE Netbeans 6.9 o Superior
  • Conector MySQL JDBC  (mysql-connector-java-5.1.6-bin.jar o superior)
Comencemos.
1. Lo primero que necesitamos es una base de datos, debes crear uno en MySQL y agregarle una tabla, la siguiente:
CREATE TABLE jugador (
  id int(2) NOT NULL auto_increment,
  nombre varchar(60) NOT NULL,
  anio_nac int(4) default NULL,
  categoria varchar(20) default NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
2. Ahora crearemos un procedimiento almacenado, la acción de este sera: registrar a un jugador dado su nombre y año de nacimiento, se calculara su edad y dependiendo de esta, se registrara en la categoría correspondiente, de 18 a 20 años en la categoría “Sub 20” , de 21 a 23 años en la categoría “Sub 22”, si el rango de edad no entra en ninguno de los anteriores, se registrara al jugador como “Sin categoría”.
DELIMITER $
CREATE PROCEDURE registrar_jugador(IN nombre varchar(60) ,
                                   IN anio_nac INT,
                                   OUT resultado TEXT)
BEGIN
DECLARE edad int ;
DECLARE categoria char(20) ;
-- obtiene la edad del jugador
SET edad = ( DATE_FORMAT(now() ,'%Y') - anio_nac );
-- dependiendo de la edad se registra al jugador en diferentes categorias
     CASE
        WHEN edad=18 OR edad=19 OR edad=20 THEN SET categoria = 'Sub 20'  ;
        WHEN edad=21 OR edad=22 OR edad=23 THEN SET categoria = 'Sub 22'  ;
        ELSE SET categoria = 'Sin categoria';
     END CASE ;
     INSERT INTO jugador(nombre, anio_nac, categoria) VALUES( nombre, anio_nac , categoria );
-- Cuando se termina de registrar al jugador, se devuelve una respuesta en formato de texto
     SET resultado = CONCAT( 'Jugador ', nombre, ' de ' , edad , ' años registrado en categoria [' , categoria, ']' );
END $
DELIMITER ;
Si deseas probar el procedimiento en MySQL puedes llamarlo de la siguiente forma
CALL registrar_jugador('Lani Hall',1990, @resultado);
select @resultado;
3. Ahora nos dirigemos a Netbeans.
Crea un nuevo proyecto “jcProc”, no utilizaremos interfaz gráfica para no complicar el tutorial, añade la libreria *.jar de conexion JDBC y crea una nueva clase “database.java”, el código para esta clase es:
package jcproc;
import java.sql.*;
/**
 * @web https://www.jc-mouse.net/
 * @author Mouse
 */
public class database {

  /* DATOS PARA LA CONEXION */
  private String bd = "BASE_DE_DATOS";
  private String login = "USUARIO";
  private String password = "PASSWORD";
  private String url = "jdbc:mysql://localhost/"+bd;
  private Connection conn = null;
//___________________________________________________________________________________ Soy una barra separadora 🙂
  //Constructor de la clase que se conecta a la base de datos una vez que se crea la instancia
  public database(){
      try{         
         Class.forName("com.mysql.jdbc.Driver");         
         conn = DriverManager.getConnection(url,login,password);         
      }catch(SQLException e){
         System.out.println(e);
      }catch(ClassNotFoundException e){
         System.out.println(e);
      }
    }
//___________________________________________________________________________________ Soy una barra separadora 🙂
/* FUNCION PARA LLAMAR A UN PROCEDIMIENTO ALMACENADO
 * INPUT:
 * nombre = tipo string
 * anio_nacimiento = tipo entero
 * OUTPUT:
 * String
 */
   public String procedure(String nombre, int anio_nacimiento)
   {
       String resultado=null;
       try {            
            // se crea instancia a procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
            CallableStatement proc = conn.prepareCall(" CALL registrar_jugador(?,?,?) ");
            //se cargan los parametros de entrada
            proc.setString("nombre", nombre);//Tipo String
            proc.setInt("anio_nac", anio_nacimiento);//Tipo entero
            // parametros de salida
            proc.registerOutParameter("resultado", Types.VARCHAR);//Tipo String
            // Se ejecuta el procedimiento almacenado
            proc.execute();            
            // devuelve el valor del parametro de salida del procedimiento
            resultado = proc.getString("resultado");
        } 
       catch (Exception e) {                  
            System.out.println(e);
       }
       return resultado;
   }
//___________________________________________________________________________________ Soy una barra separadora 🙂
}
Esta clase esta dividida en dos partes, el constructor de la clase, donde realizamos la conexión a la base de datos y un metodo al que llamamos “procedure”, este metodo es el que nos permite ejecutar el procedimiento almacenado en MySQL desde Java, esta comentado para que se pueda entender más facilmente.
4. para terminar implementados esta clase en el main.java, el código es:
package jcproc;
/**
 * @web https://www.jc-mouse.net/
 * @author Mouse
 */
public class Main {

    public static void main(String[] args) {

        database db = new database();

        String r = db.procedure("John Winston Lennon", 1999);
        System.out.println(r);

        r = db.procedure("James Paul McCartney", 1990);
        System.out.println(r);

        r = db.procedure("Ned Flanders", 1994);
        System.out.println(r);
    }

}
Finalmente ejecuta el proyecto en netbeans, debes tener como resultado:
Jugador John Winston Lennon de 13 años registrado en categoria [Sin categoria]
Jugador James Paul McCartney de 22 años registrado en categoria [Sub 22]
Jugador Ned Flanders de 18 años registrado en categoria [Sub 20]
Puedes bajarte el proyecto “procedimientos almacenados en java” desde aqui.

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Ajustar imagen de fondo a diferentes resoluciones

Ajustar imagen de fondo a diferentes resoluciones

Si diseñamos paginas web, nos habremos topado con el problema de colocar una imagen de fondo y que este se adapte a toda...

Introducción a Spark Framework

Introducción a Spark Framework

Spark Framework es un conjunto de librerías para los lenguajes Java y Kotlin que nos sirve para el desarrollo rápido y s...

JavaFX y ApiRest – GET

JavaFX y ApiRest – GET

En este tutorial construiremos una aplicación en JavaFX para leer datos de un servicio web Herramientas IDE Netbeans 8.x...

Compresión y descompresión de archivos con GZIP

Compresión y descompresión de archivos con GZIP

En este post veremos un ejemplo de como comprimir y descomprimir archivos con el método de compresión GZIP  y el paquete...

Conectar java con Firebird

Conectar java con Firebird

En este tutorial veremos la forma de conectarse a una base de datos de Firebird utilizando el lenguaje Java y el IDE Net...

Gestión de Stock (Parte 2)

Gestión de Stock (Parte 2)

Continuando con el desarrollo de la aplicación (Parte 1), abrimos Netbeans y creamos un nuevo proyecto al que llamaremos...

1 comentario en “Procedimientos almacenados en java”

  1. carmelosoft dice:

    ¡Hola!

    Estoy comenzando a programar en Java y bases de datos y cuando he comenzado a buscar información sobre como leer procedimientos almacenados desde java tu ejemplo ha sido el mas fácil de comprender, sencillo, claro y directo al grano. Gracias por haber dedicado ese tiempo, me ha sido de gran ayuda.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Acierta los colores o Adivina los colores es un sencillo juego que consiste en que dado 6 colores “rojo”,...

“MyBatis es una herramienta de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacena...

MyBatis es un framework de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacenados a part...

Webcam Capture es un API  que permite usar una cámara web incorporada o externa directamente desde código Java utilizand...

Herramientas

Generador de Enlaces a Whatsapp