我要问愚蠢的问题。我可以将值存储在布尔引用变量中,如st = rs.next和boolean可以返回字符串值吗?
public class Valid {
Public static boolean checkuser(String email, String pass) {
Boolean st = false; // (why did it user here and what's means)
try {
Class.forName("com.mysql.jdbc.driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/tst", "root", "mysql"); //Connection established
PreparedStatement ps = con.prepareStatement("Select * from login where user=? and pass=?");
ps.setSting(1, eamil);
ps.setString(2, pass);
Resultset rs = ps.executeQuery();
st = rs.next(); //(please brief explain about this line)
} catch (Exception e) {
e.printStackTrace();
}
return st; //( about this line)
}
}
我只是不明白这段代码特别是布尔行为
答案 0 :(得分:0)
boolean可以返回字符串值??
st是一个布尔变量,它返回一个布尔值,而不是一个String。因此,您可以为其分配list.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
arg1.setBackgroundColor(Color.BLUE);
return true;
}
});
返回的布尔值。
rs.next()
返回rs.next()
。因此,您的方法是检查true
表中是否存在记录,其中login
列中已通过的电子邮件和user
列中的已通过密码。
pass
初始化为st
,这意味着如果try块抛出任何false
,您的方法将返回false。
顺便说一句,我将Exception
的类型从st
更改为Boolean
。这里使用boolean
包装器类型毫无意义,因为您的方法永远不会返回null。
答案 1 :(得分:0)
value
这声明了一个新的布尔变量并为其赋值Boolean st = false;
,否则它将是false
。
null
这里布尔变量设置st = rs.next();
next()
现在可能发生了两件事:如果至少有一行,则查询成功,返回值为return st;
。如果查询未成功,则返回值为true
。
并且有可能抛出异常。然后使用布尔值(方法中的第一行)false
的原始值。
因此,只有至少有一行时,该方法才返回true。如果不存在行或发生错误,则返回false。
但由于布尔值永远不会设置为null,因此编码器可以使用false
而不会出现问题。