我想把它变成一个返回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(); }
}
我应该得到所有声明,但我想听听你们的想法。
答案 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。