我正在使用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的结果。
答案 0 :(得分:1)
由于您的函数只返回一个布尔值,因此java无法知道该内核的mysql函数。而不是返回一个布尔值,你可以在mysql函数中返回Id,在java中它可以检查它的null是否为null表示登录失败,否则登录成功并且你有id。或者,您可以将boolean和id作为CSV varchar返回,然后在java中将其拆分以提取布尔值和id。