簡體   English   中英

使用計數登錄桌面應用程序

[英]Desktop application login using count

我試圖在用戶驗證為“管理員”或“用戶”時調用頁面,但似乎存在問題。

private void validateLogin() {
    if (getFieldData() == true) {
        username = txtname.getText();
        String password = new String(txtpassword.getPassword());
        Object type = cbType.getSelectedItem();
        //validate login and password here. 
        //validity will be done by sending login/password to the database
        String sql = "select  count(*) from usermanagement where UserName='" 
                + username + "' and " + "Password='" + password + "'";
        ResultSet rs = datacon.queryTable(sql);
        try {
            rs.next();
            if (rs.getInt(1) > 0) {
                if (type.equals("Admin")) {
                    MainMenu mainmenu = new MainMenu();
                    this.dispose();
                    mainmenu.setVisible(true);
                } else {
                    UserMenu usermenu = new UserMenu();
                    this.dispose();
                    usermenu.setVisible(true);
                }
            } else {
                JOptionPane.showMessageDialog(this, 
                        "Incorrect username or password or user category", 
                        "Error", JOptionPane.ERROR_MESSAGE);
                clearField();
                txtname.requestFocusInWindow();
                cbType.setSelectedIndex(0);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

我在這里看不到您的輸入,用戶名和密碼。 最好附上您的日志以了解Exception關於您的問題的內容。

從我在代碼中看到的是我的建議,

  • 您應該避免在SQL上使用此UserName='"+username +"' ,這對於特殊的字符可能會破壞您的SQL來說是令人震驚的。 我建議您堅持使用PreparedStatement之類的方法http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

  • 最好堅持使用if(rs.next())來檢查記錄是否存在。 訪問rs.getInt(1)rs.getInt(1) ,如果沒有匹配的記錄,則可能會破壞您的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM