java - 在用户验证中按下登录按钮后,我的代码不显示任何内容

标签 java swing user-interface awt

下面是我的登录用户界面代码。我正在尝试创建用户验证。我已经完成了我应该做的所有事情,但是在按下控制台中的“登录”按钮后我的代码没有显示任何内容。这段代码有什么问题?

import javax.swing.*;                              // For Frame
import java.awt.event.*;                           // For action Listener
import java.sql.*;                                // For Database

public class Login {
    /*    Three instance varaibles     */

    Connection con;
    Statement st;
    ResultSet rs;
    JFrame f = new JFrame("User Login");
    JLabel l = new JLabel("Username:");
    JLabel l1 = new JLabel("Password:");
    JTextField t = new JTextField(10);
    JTextField t1 = new JTextField(10);
    JButton b = new JButton("Login");

    /*     CONSTRUCTOR                 */
    public Login() {
        /*    METHODS                */
        connect();
        frame();
    }

    public void connect() {
        try {
            /*         DECLARING DRIVER                             */
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(driver);
            String db = "jdbc:odbc:Database1";
            /*  THIS WILL GET A CONNECTION TO OUR DATABASE  */
            con = DriverManager.getConnection(db);
            st = con.createStatement();
        } catch (Exception ex) {
        }
    }

    public void frame() {
        f.setSize(600, 400);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        JPanel p = new JPanel();
        p.add(l);
        p.add(t);
        p.add(l1);
        p.add(t1);
        p.add(b);
        f.add(p);
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String user = t.getText().trim();
                    String pass = t1.getText().trim();
                    String sql = "select user,pass from Table2 where user='"
                            + user + "'and pass='" + pass + "'";
                    rs = st.executeQuery(sql);
                    int count = 0;
                    while (rs.next()) {
                        count = count + 1;
                    }
                    if (count == 1) {
                        JOptionPane.showMessageDialog(null,
                                "User found, Access granted! ");
                    } else if (count > 1) {
                        JOptionPane.showMessageDialog(null,
                                "Duplicate user, Access denied! ");
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "User not found! ");
                    }
                } catch (Exception ex) {
                }
            }
        });
    }

    public static void main(String[] args) {
        new Login();
    }
}

最佳答案

  1. Class.forName() 后添加 System.out.println("Driver Loaded") 以查看驱动程序是否已加载
  2. 在连接代码后添加System.out.printlnt("Connected to Database"),查看是否已连接
  3. ex.printStackTrace() 放入所有空的 catch block 中,以便您可以看到错误发生的位置。
  4. 我在测试时忘记添加 MySql jar,因此出现了 ClassNotFoundException。确保您的 jar 包含在项目中。添加 jar 后,代码就可以工作了。不过,我确实将数据库切换到了 MySql,因为那是我使用的数据库

添加到第 3 点。如果您收到 ClassNotFoundException,您可能需要将驱动程序 jar 添加到您的库中。如果您收到SQLException,则可能是您的连接语法或查询语法有问题。除此之外,我不知道还会在哪里发生异常,因为我自己运行了它。

关于java - 在用户验证中按下登录按钮后,我的代码不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20759270/

相关文章:

java - Junit 不支持 major.minor 版本 51.0,但不支持 Web 应用程序

java - Java 中的二维列表/集合

java - 在 Swing 中更改 JTable 列中的下拉内容

java - JFrame 中的错误

css - 以正确的方式重新学习 CSS

java - 如何在JAVA中添加鼠标监听器?

java - 将页面 Blob 上传到 Azure 时出现错误 : Make sure the value of Authorization header is formed correctly

java - BorderLayout的使用

java - JTabbedPane 鼠标悬停绘制问题

java - 寻找适合此应用程序的 GUI 设计模式