实现javaswing登录界面链接数据库
时间: 2023-11-21 18:06:00 浏览: 39
好的,下面是一个简单的示例代码,用于实现Java Swing登录界面链接数据库的功能:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class LoginFrame extends JFrame implements ActionListener {
private JTextField usernameTF;
private JPasswordField passwordPF;
private JButton loginBtn;
public LoginFrame() {
setTitle("Login");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel(new GridLayout(3, 2));
JLabel usernameLabel = new JLabel("Username:");
usernameTF = new JTextField();
panel.add(usernameLabel);
panel.add(usernameTF);
JLabel passwordLabel = new JLabel("Password:");
passwordPF = new JPasswordField();
panel.add(passwordLabel);
panel.add(passwordPF);
loginBtn = new JButton("Login");
loginBtn.addActionListener(this);
panel.add(loginBtn);
add(panel);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == loginBtn) {
String username = usernameTF.getText();
String password = new String(passwordPF.getPassword());
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myDatabase", "myUsername", "myPassword");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'");
if (rs.next()) {
JOptionPane.showMessageDialog(this, "Login successful!");
} else {
JOptionPane.showMessageDialog(this, "Invalid username or password!");
}
con.close();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Error: " + ex.getMessage());
}
}
}
public static void main(String[] args) {
new LoginFrame();
}
}
```
在上面的代码中,我们首先创建了一个名为`LoginFrame`的JFrame窗口。该窗口包含了一个包含3行2列的JPanel面板,其中包含了用户名、密码和登录按钮等组件。当用户点击登录按钮时,我们从用户名和密码文本框中获取用户输入的值,并使用JDBC链接到MySQL数据库。然后,我们执行一条SQL查询,以检查数据库中是否存在与输入的用户名和密码匹配的用户。如果查询返回结果,则显示“登录成功”消息框,否则显示“无效的用户名或密码”消息框。
需要注意的是,在实际开发中,我们应该使用PreparedStatement对象来执行SQL查询,以避免SQL注入攻击。此外,我们还应该将数据库连接信息存储在配置文件中,而不是在代码中硬编码。