Java mysql |函数多重返回

Java mysql |函数多重返回,java,mysql,Java,Mysql,我正在使用mysql函数进行登录验证 DELIMITER || CREATE FUNCTION CheckLogin (username VARCHAR(10), _password VARCHAR(20)) RETURNS BOOL NOT DETERMINISTIC READS SQL DATA BEGIN RETURN EXISTS (SELECT ID FROM `users` WHERE name = _username AND passwd = _pa

我正在使用mysql函数进行登录验证

DELIMITER ||
CREATE FUNCTION CheckLogin (username VARCHAR(10), _password VARCHAR(20))
    RETURNS BOOL
    NOT DETERMINISTIC
    READS SQL DATA
BEGIN
    RETURN EXISTS (SELECT ID FROM `users` WHERE name = _username AND passwd = _password);
END;
||
DELIMITER ;
这是我的Java代码:

try {
    cStmt = (CallableStatement) sql.connection.prepareCall("{? = call CheckLogin(?, ?)}");
        cStmt.registerOutParameter(1,Types.BOOLEAN);
        cStmt.setString(2, name);
        cStmt.setString(3, passwd);
        cStmt.execute();
         outputValue = cStmt.getBoolean(1);
    } catch (SQLException e1) {
        e1.printStackTrace();

我不知道如何返回SELECT ID的结果,我想获取ID。

因为您的函数只返回一个布尔值,java无法知道ID,因为它是mysql函数的内部ID。与返回布尔值不同,您可以在mysql函数中返回Id,在java中,它可以检查其null值,其中null表示登录失败,否则登录成功并且您拥有Id。或者,您可以将布尔值和Id都返回为CSV varchar,然后在java中拆分它以提取布尔值和Id。

为什么返回布尔值MySQL函数?因为如果存在pass than的用户名,则返回True,否则返回false,因为最后你说我不知道如何返回SELECT ID的结果,我想获取ID。是的,身份验证是可以的,但我也想显示SELECT结果。我不知道如何返回bool和Int,bool是用户名和passed存在,Int是select的IDresult@Norbert:建议更改为返回整数并声明整数变量。从表中选择变量id。。。最后返回变量。