Процедурата и Java кодът се нуждаят от малко усвояване. И така, нека започнем с процедурата:
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
Искате да извлечете стойността "idusuarios" от базата данни. Така че трябва да го запишете в стойността на параметъра. Уверете се, че параметърът и стойността в клаузата за избор са различни един от друг или предоставете името на колоната чрез [tablename].[column] или псевдоним.
Проблем с Java:Изобщо не се нуждаете от ResultSet Object. За достъп до стойността от изходен параметър на процедура използвайте cs.getInt(), предоставен от класа CallableStatement.
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);
}
}
}
}