[英]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.