Como crear procedimientos almacenados con parametros y llamarlos desde java?

Teniendo en cuenta la siguiente tabla "Productos"  que tenemos creada como en nuestra base de datos PRUEBAS vamos a crear un procedimiento parametrizado para actualizar los campos de un registro.

En esta ocasión vamos a modificar el registro seleccionado.






para crear un proceso parametrizado realizamos los siguientes pasos:
  1. escribimos la siguiente sentencia CREATE PROCEDURE. 

  2. Después de esto escribimos el nombre de nuestro proceso.

  3. seguido del nombre ponemos dos paréntesis ( ).

  4. dentro de los paréntesis escribimos todos variables que almacenarán todos los campos datos que vamos a actualizar en el registro, seguido del tipo de dato y entre paréntesis escribimos la longitud de caracteres que tendrá.

  5. hacemos un salto de línea y escribimos nuestra sentencia SQL como se muestra en la imagen.






 CREATE PROCEDURE `ACTUALIZA_DATOS`(`PCODIGO` INT,  `PSECCION` VARCHAR(15), `Pnombre` VARCHAR(20), `Pprecio` DOUBLE,  `Pfecha` DATE,  `Ppaisdeorigen` VARCHAR(15), `PIMPORTADO` VARCHAR(15))

UPDATE `productos` SET `SECCION`=PSECCION,`NOMBREARTICULO`=Pnombre,`PRECIO`=Pprecio,`FECHA`=Pfecha,`IMPORTADO`= PIMPORTADO,`PAIS DE ORIGEN`=Ppaisdeorigen WHERE `CODIGO`=PCODIGO
al ejecutar la sentencia ya tendremos nuestro proceso almaecnado en nuestra base de datos.

como utilizar procesos parametrizados desde un programa en java

Para poder ejectuar estos procesos correctamente se deben de seguir los siguientes pasos:
  1. Conectamos nuestra base de datos en mysql(como conentar una db mysql en java)
  2. Creamos un objeto de la clase CallableStatement c de java para llamar al proceso.
  3. dentro de nuestro objeto c estara almacenado el metodo prepareCall de la interfaz connection  y le pasamos por parametro siguiente fragmento.
  4. Dentro el metodo preparecall escribimos la siguiente instruccion ente comillas { CALL ACTUALIZA_DATOS}
  5. seguido del nombre de nustro proceso colocamos los interrogantes para cada parametro.  ACTUALIZA_DATOS ?,?,?,?,?,?,? .
  6. utilizando los metodos set  de la clase preparecall  y le asignamos un valor para cada incognita.
ejemplo:

    import java.sql.CallableStatement;

    import java.sql.Connection;

    import java.sql.Date;

    import java.sql.DriverManager;

    import java.sql.SQLException;

    import java.time.LocalDate;

    public class ProcesosParametrizados {

    private static final String nombrearticulo=" play station 5";

    private static final String seccion="Tecnologia";

    private static final String paisdeorigen="china";

    private static final String importado="verdadero";

    private static final double precio=3000;

    private static final int codigo =1;

    private static LocalDate fecha= LocalDate.now();

    public ProcesosParametrizados() {

    }

    public static void main(String[] args) {

    try {

    Connection basededatos= DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebas","root","");

    CallableStatement mustraclientes=basededatos.prepareCall("{call ACTUALIZA_DATOS (?,?,?,?,?,?,?)}");

    mustraclientes.setInt(1,codigo);

    mustraclientes.setString(2,seccion );

    mustraclientes.setString(3, nombrearticulo);

    mustraclientes.setDouble(4,precio );

    mustraclientes.setDate(5, Date.valueOf(fecha));

    mustraclientes.setString(6,paisdeorigen );

    mustraclientes.setString(7,importado );

        }

    } catch (SQLException e) {

        System.out.println("no se ha podido conectar");

        e.printStackTrace();

        }

    }

}

Al ejecutar este programa verificamos en nuestro gestor de bases de datos mysql y ya deben estar modificados los campos del registro.






Comentarios

Entradas populares