Java 登录页面按钮不起作用



我正在使用java应用程序处理登录页面,尝试将其连接到我创建的访问数据库,只是想要一个简单的选择查询来检查输入的用户名和密码是否有效,执行时没有错误,但是按钮不起作用,有什么想法吗?

这是代码:

import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
public class Login {
   Connection con;
   Statement st;
   ResultSet rs;
   JFrame f = new JFrame("User Login");
   JLabel l = new JLabel("Username");
   JLabel ll= new JLabel("Password");
   JTextField t = new JTextField(10);
   JTextField t1 = new JTextField(10);
   JButton b = new JButton("Login");
   public Login()
   {
       connect();
       frame();
   }
   public void connect()
  {
       try
       {
       String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
       Class.forName(driver);
       String db = "jdbc:odbc:db1";
       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(ll);
       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 username, password from Users where username =                 
'"+user+"' and password= '"+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 ();
}
}

"按钮不起作用"到底是什么意思?事件永远不会被触发,或者事件中的代码没有为您产生任何结果?

如果您只是要使用记录计数来确定是否存在特定的用户/密码,那么我想建议您这样做:

int count = 0;
conn.setAutoCommit(false);
PreparedStatement stmt = conn.prepareStatement("SELECT COUNT(*) AS rCount FROM Users WHERE username = '" + user + "' AND password = '" + pass + "';");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
    count = rs.getInt("rCount");
}
rs.close();
stmt.close();
if (count != 0) {
    JOptionPane.showMessageDialog(null, "User Found, Access Granted!");
}

但是,您也可以这样做:

conn.setAutoCommit(false);
PreparedStatement stmt = conn.prepareStatement("SELECT username, password FROM Users WHERE username = '" + user + "' AND password = '" + pass + "';");
ResultSet rs = stmt.executeQuery();
String un = "";
String up = "";
while (rs.next()) {
    un = rs.getString("username");
    up = rs.getString("password");
    // or any other table fields you want...
}
rs.close();
stmt.close();
if (!un.equals("") && !up.equals("")) {
    JOptionPane.showMessageDialog(null, "User Found, Access Granted!");
}

您可能还想看看如何使用UCanAccess库。它与MS Access配合得很好。

最新更新