sql >> Database teknologi >  >> RDS >> Mysql

Kalder lagrede procedurer fra Java

Procedure og Java-kode behøver kun lidt vedtagelse. Så lad os starte med proceduren:

create DEFINER=`root`@`localhost` PROCEDURE `comprobarUsuario`(
IN usu varchar(20),
IN pass varchar(20),
OUT idusuarios int)
BEGIN
  SELECT usuarios.idusuarios
  into idusuarios
  FROM usuarios
  WHERE usuarios.nombreUsuario = usu and usuarios.contraseña = pass;
end

Du ønsker at hente værdien "idusuarios" fra databasen. Så du skal gemme det i parameterværdien. Sørg for, at parameter og værdi i select-sætningen er forskellige fra hinanden, eller angiv kolonnenavnet via [tabelnavn].[kolonne] eller alias.

Java-problem:Du behøver slet ikke ResultSet Object. For at få adgang til værdien fra en procedureoutputparameter, brug cs.getInt() leveret af CallableStatement-klassen.

public void mostrarDatos(){
    Connection con = null;
    try {
        con = getConnection();
        CallableStatement cs = con.prepareCall("{CALL comprobarUsuario(?,?,?)}");
        cs.setString(1, "Jorge");
        cs.setString(2, "1627Jorge");
        cs.registerOutParameter(3, java.sql.Types.INTEGER);
        cs.executeUpdate();

        int resultado = cs.getInt(3);
        System.out.println(resultado);  

    } catch (Exception e) {
        System.out.println(e);
    } finally {
        if(con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                System.out.println(e);
            }
        }
    }
}


  1. Sådan redigeres MySQL my.cnf-filen

  2. Sådan udføres en procedure inde i en pakke i Oracle

  3. SQL Alchemy Relationship loader efterlader en lås på bordet?

  4. Hvordan importerer man en CSV til postgresql, der allerede har tildelt id'er?