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?
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 ;
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 ;
CALL registrar_jugador('Lani Hall',1990, @resultado); select @resultado;
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 🙂 }
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); } }
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]
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! :)
En este post realizaremos una aplicación android que hará uso de la cámara del celular para tomar una foto y guardarla e...
En este tutorial crearemos un botón con el estilo del nuevo windows 8 Modern UI que primero se conoció como Metro UI. E...
Para colocar un JCheckBox dentro una celda de un JTable debemos sobre escribir algunas clases para que el componente pue...
Si diseñamos paginas web, nos habremos topado con el problema de colocar una imagen de fondo y que este se adapte a toda...
Continuando con el estudio del meta lenguaje XML (Lenguaje de Marcado Extensible) bastante utilizado en el intercambio d...
En este post personalizaremos una tabla JTable Swing para pintar una imagen de fondo y darle un poco de estilo al encabe...
Los comentarios estan cerrados
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...
¡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.