将void方法转换为boolean-java

时间:2015-08-28 13:53:11

标签: java mysql database

我想把它变成一个返回true或false的布尔值。 我根本不知道该怎么做,所以我需要一些帮助。

public static void checkUSPASS(String a,String b) {
    try {
           con = DriverManager.getConnection(url,username, password);
            stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            String sql;
          sql = "SELECT * FROM db Where Email='"+a+"' and Password='"+b+"'";
          ResultSet rs = stmt.executeQuery(sql);
          if(rs.next())
               {
               //return true 
               }
           else 
                {
                 //return false
                }

        } 
        catch (SQLException ex) {
        ex.printStackTrace(); }

        }

我应该得到所有声明,但我想听听你们的想法。

3 个答案:

答案 0 :(得分:3)

虽然这不是你问题的答案,但我相信它会帮助你改善你的方法。可能评论会更合适,但是大文本的评论很难阅读。

Don't像你一样使用SQL查询字符串组合。使用PreparedStatement代替。

处理方法内部的异常或进一步抛出它们。打印堆栈跟踪不是异常处理,它隐藏了最终用户的问题。

要抛出异常,请在方法声明中添加throws SQLException,并从方法体中删除try / catch构造。它将允许调用者处理异常,并在以后避免许多难以捕获的错误。

不要将密码存储为字符串,这是一种不好的做法。 Hash passwords with salt并存储密码哈希码。

最后你的方法声明应该是这样的:

public static boolean checkUSPASS(String username,String hashCode) throws SQLException

答案 1 :(得分:1)

首先更改方法签名以返回值:

public static boolean checkUSPASS(String a,String b)

然后从方法中返回一个值:

return true;

或:

return false;

请注意,所有代码路径都必须返回一些值。所以你在try块中有这个:

if (rs.next()) {
    return true;
}
else {
    return false;
}

但是如果到达catch区块,仍然必须返回一些内容:

catch (SQLException ex) {
    ex.printStackTrace();
    return false;
}

答案 2 :(得分:0)

要在java中将函数更改为boolean,您只需在函数定义中将void更改为boolean,并在所有端点返回true或false。