美好的一天
我还在学校学习Java编程,有一个项目我一直在研究。一切都运行良好,但我的程序的一个功能,允许用户更改其登录凭据不再正常工作。我不记得改变了什么,它之前工作得很好。
当我单击“执行”按钮时,会出现问题,该按钮执行SQL查询以更改数据库中的用户名和密码字段值。 JFrame冻结,我必须通过WTM强行终止它。另外需要注意的是,在控制台中,我收到一条红色的消息说:
Java结果:-805306369
每次都有相同的价值。我已经做了一些谷歌搜索,我发现的所有问题都是因为冻结等问题是由循环错误引起的,但据我所知,我对这部分代码没有任何问题。
如果有人能帮助我,我会非常感激!把头发拉出来。
下面是我的“应用”按钮的代码,以及SQL查询。
private void btnApplyActionPerformed(java.awt.event.ActionEvent evt) {
try {
if (txtNewUsername.equals("")) {
labelFlagUsername.setVisible(false);
JOptionPane.showMessageDialog(this, "You Need To Fill In The New Username Field", null, JOptionPane.ERROR_MESSAGE);
System.out.println("You Need To Fill In The New Username Field");
} else if (txtNewPassword.equals("")) {
labelFlagPassword.setVisible(false);
JOptionPane.showMessageDialog(this, "You Need To Fill In The New Password Field", null, JOptionPane.ERROR_MESSAGE);
System.out.println("You Need To Fill In The New Password Field");
} else {
UN = txtNewUsername.getText();//Gets value that user entered into field
PW = txtNewPassword.getText();//Gets value that user entered into field
DM.editLoginDetails(UN, PW);//Executes SQL query editLoginDetails
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(this, e.getMessage(), null, JOptionPane.ERROR_MESSAGE);
System.out.println(e.getMessage());
}
txtCurrentUsername.setText(" " + DM.getUsername(UN));
txtCurrentPassword.setText(" " + DM.getPassword(PW));
String temp = "";
txtNewPassword.setText(temp);
txtNewUsername.setText(temp);
}
SQL查询:
public String editLoginDetails(String UN, String PW)
{
try {
Statement st = con.createStatement();
String query = "UPDATE Users SET Username = '" + UN + "',Password = '" + PW + "';";
st.execute(query);
ResultSet rs = st.getResultSet();
JOptionPane.showMessageDialog(null, "Your login details were changed successfully!");
System.out.println("Your login details were changed successfully!");
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println(e.getMessage());
}
return "Your login details were changed successfully!";
}
最后,我认为了解这个JFrame的样子会很有用。你会更好地理解为什么我的代码是这样的,希望如此。
我希望有人可以帮助我!不顾一切地解决这个恼人的问题。
答案 0 :(得分:0)
尝试纠正我没有真正理解的事情失败,或者首先想到的是错误,我终于发现了我的问题。所有发生的事情都是在我的JFrame属性中,我将此窗口设置为始终位于顶部。当我单击“应用”按钮时,框架似乎只是冻结,因为显示成功JOptionPane,只有落后于 GUI,所以我无法响应它。禁用“Always On Top”选项后,它现在可以正常运行。
感谢所有的建议! :)