在Java中记录为用户语句

时间:2015-07-10 06:28:45

标签: java mysql

*在登录页面,用户提供用户名和密码并登录主页。(使用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是用户在登录页面中作为用户名提供的文本。

2 个答案:

答案 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);
}