mysql |函数多次返回

时间:2015-08-20 11:14:58

标签: 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 = _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的结果。

1 个答案:

答案 0 :(得分:1)

由于您的函数只返回一个布尔值,因此java无法知道该内核的mysql函数。而不是返回一个布尔值,你可以在mysql函数中返回Id,在java中它可以检查它的null是否为null表示登录失败,否则登录成功并且你有id。或者,您可以将boolean和id作为CSV varchar返回,然后在java中将其拆分以提取布尔值和id。