【发布时间】:2021-02-11 09:53:43
【问题描述】:
我正在尝试从我的 Java 应用程序调用 mySQL 存储过程。当我从 mySQL 工作台调用存储过程时,它可以工作,并且我会根据我发送的参数获得正确的行数。当我尝试从 Java 调用它时,问题就来了,我没有得到任何结果,也找不到原因。我一直在关注 oracle 文档。
存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `comprobarUsuario`(
IN usu varchar(20),
IN pass varchar(20),
OUT idusuarios int)
BEGIN
SELECT idusuarios
FROM usuarios
WHERE usuarios.nombreUsuario = usu and usuarios.contraseña = pass;
END
我试图调用存储过程的 Java 类:
public class ConectorSQL {
public static final String URL = "jdbc:mysql://localhost:3306/ProyectoBD?autoReconnect=true&useSSL=false";
public static final String USERNAME = "root";
public static final String PASSWORD = "1627Admin";
public static Connection getConnection() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = (Connection) DriverManager.getConnection(URL, USERNAME, PASSWORD);
//System.out.println("Conexion exitosa");
} catch (Exception e) {
System.out.println("Error de conexión con la base de datos");
}
return con;
}
public void mostrarDatos() {
try {
Connection con = null;
con = getConnection();
CallableStatement cs;
cs = con.prepareCall("{CALL comprobarUsuario(?,?,?)}");
cs.setString(1,"Jorge" );
cs.setString(2, "1627Jorge");
cs.registerOutParameter(3, Type.INT);
ResultSet rs2 = cs.executeQuery();
if(rs2.next()){
System.out.println(true);
}
int resultado = cs.getInt("idusuarios");
System.out.println(resultado);
con.close();
} catch (Exception e) {
}
}
}
【问题讨论】: