【发布时间】:2019-03-16 06:16:06
【问题描述】:
我正在制作一个应用程序,我正在尝试使用存储在 MySQL 服务器中的数据登录用户。 我遇到的问题是,当我尝试使用正确的用户名和密码登录时,我的代码实际上是在检查“adminData”表中的每条记录,并向我显示每条记录的相应结果! 我也附上我的代码,请看一下! 所以我想问我怎么只能搜索一个特定的记录,它只会让我恢复那个特定的记录! 请帮帮我.. :)
btnSubmit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String query = "SELECT username, password FROM adminData";
String username = null;
String password = null;
;
try
{
rs = st.executeQuery(query);
String fieldWarning = "*all field are mandatory!";
String enteredUsername = usernameField.getText();
@SuppressWarnings("deprecation") String enteredPassword = passwordField.getText();
usernameField.setCursor(null);
fieldLabel.setText("");
int userLen = enteredUsername.length();
int passLen = enteredPassword.length();
if (userLen != 0 && passLen != 0)
{
if (userLen <= 32 && passLen <= 32)
{
while (rs.next())
{
username = rs.getString("username");
password = rs.getString("password");
if (enteredUsername.equals(username))
{
if (enteredPassword.contentEquals(password))
{
AdminDashboard frame = new AdminDashboard();
frame.setVisible(true);
frame.dispose();
}
else
{
JOptionPane.showMessageDialog(null, "Password Missmatch");
}
}
else
{
JOptionPane.showMessageDialog(null, "Invalid User");
passwordField.setText("");
usernameField.setText("");
usernameField.setCursor(null);
}
}
}
else
{
JOptionPane.showMessageDialog(null,
"Please enter a valid username or password! \n(Note: Only 32 char MAX)");
passwordField.setText("");
usernameField.setText("");
}
}
else
{
fieldLabel.setText(fieldWarning);
usernameField.setCursor(null);
}
}
catch (SQLException e1)
{
JOptionPane.showMessageDialog(null, "Database Error: " + e1);
}
}
});
【问题讨论】:
-
你的表中的主键是什么?
-
主要是“id”,它是自动递增的,我已经使“用户名”属性唯一
-
String query = "SELECT username, password FROM adminData WHERE id = '" + id +"'";
-
用户名= rs.getString("用户名");密码= rs.getString("密码");将这些字段从 while 循环中取出。
-
问题太多,无法给出答案。对于初学者,请不要将用户密码以明文形式存储在数据库表中。