如何判断用户名与数据库中的相同~

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:15:15
代码如下,请看代码中间的提问,谢谢~
public String checkAccount(String Login_Name) {
DB db = new DB();
Connection conn = db.getConn();
String sql = "select Login_Pwd from account where Login_Name='"+Login_Name+"'";
String pwd=null;
PreparedStatement stmt = null;
ResultSet rs=null;
boolean flag=false;
try {
stmt = conn.prepareStatement(sql);
rs=stmt.executeQuery();
如何在这个位置上加判断,如果用户相同啊,便接下去验证密码~请大虾,加一下 这块的代码。如果有更好的方法来验证用户和密码的,能安全一些的请粘出来,谢谢
while(rs.next())
{
pwd=rs.getString("Login_Pwd");
}
return pwd;
} catch (SQLException e) {
e.printStackTrace();
return pwd;
} finally {

db.closeConn(conn);
db.closeStmt(stmt);
}
}

你的sql语句获得的结果是:用户名相同则返回1或多条记录,无匹配则返回0条记录.个人认为也不用加判断了,如不相同while(rs.next()) 为false,自然跳出循环.
至于安全,你既然用了PreparedStatement,为仕么仍然在拼SQL,这样不是提供SQL注入吗?建议
String sql = "select Login_Pwd from account where Login_Name = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1,"Login_Name");
rs=stmt.executeQuery();

PS:个人意见,自斟酌,"public String checkAccount(String Login_Name)"输入一个用户名返回一个密码?挺有意思的设计,一般都输入用户名和口令,返回一个boolean值,网站大多在页面上就处理了

while(rs.next())
{
pwd=rs.getString("Login_Pwd");
}
return pwd;
改为:::
你获得的页面上的密码的string passw=request.getParameter("password")
while(rs.next())
{
pwd=rs.getString("Login_Pwd");
if(passw.equals(pwd))
break;
}
return pwd;

while(rs.next())
{
pwd=rs.getString("Login_Pwd");
} 改为

if(rs.next()){
return rs.getString("Login_Pwd");
}else