0

再会

我还在学校学习 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 长什么样会很有用。希望您能更好地理解为什么我的代码是这样的。

http://tinypic.com/r/ao9udg/5

我希望有人能帮助我!急于解决这个烦人的问题。

4

1 回答 1

0

在试图纠正我并不真正理解的事情失败之后,或者首先认为是错误的,我终于发现了我的问题。所发生的只是在我的 JFrame 属性中,我将此窗口设置为始终位于顶部。当我单击应用按钮时,框架似乎只冻结,因为正在显示成功 JOptionPane,只是它在 GUI后面,所以我无法响应它。禁用“始终在顶部”选项后,它现在可以完美运行。

感谢所有的建议!:)

于 2013-10-06T08:18:38.713 回答