*在登录页面,用户提供用户名和密码并登录主页。(使用MySQL数据库检查用户详细信息并验证数据)。
*在主页中,我想要显示已记录为: [已记录的用户名] 。我尝试了下面的方法,但没有成功。
public void showUsername() throws SQLException{
String sql1 = "SELECT username FROM logininfo WHERE username= '"+uname+"'" ;
stmt = conn.createStatement();
rs = stmt.executeQuery(sql1);
while(rs.next()){
String name=rs.getString("username");
loggedUname_lbl.setText("You are Logged in as : "+name);
}
* uname是用户在登录页面中作为用户名提供的文本。
答案 0 :(得分:1)
尝试使用预准备语句并使用以下查询。如果表logininfo中有此用户名(uname),则应检索该用户名。始终建议使用预准备语句,它可以阻止SQL Injection
How does prepared statement prevent SQL Injection
public void showUsername() throws SQLException{
PreparedStatement pstmt = null;
String sql1 = "SELECT username FROM logininfo WHERE username LIKE ?" ;
// String sql1 = "SELECT username FROM logininfo WHERE username = ?" ;
//Use above query for an exact match
pstmt = conn.prepareStatement(sql1);
pstmt.setString(1, "%" + uname + "%");
// pstmt.setString(1, uname); Use this for the exact match query
rs = pstmt.executeQuery(sql1);
while(rs.next()){
String name=rs.getString("username");
loggedUname_lbl.setText("You are Logged in as : "+name);
}
}
答案 1 :(得分:0)
如果查看数据库查询,则没有任何意义。你选择你已经知道的东西!
这就是解决问题所需的全部内容:
public void showUsername() {
loggedUname_lbl.setText("You are logged in as: " + uname);
}