javafx登录界面链接数据库
时间: 2023-08-26 09:04:59 浏览: 130
要在JavaFX应用程序中连接到数据库并实现登录界面,您可以按照以下步骤操作:
1. 导入必要的类和库,如JavaFX,JDBC和数据库驱动程序。
2. 创建一个JavaFX界面,其中包含用户名和密码输入字段以及登录按钮。
3. 在登录按钮的操作事件处理程序中,获取用户名和密码输入字段的值,并将其与数据库中的用户表进行比较。
4. 如果用户名和密码匹配,则将用户重定向到应用程序的主界面,否则显示错误消息。
以下是一个简单的示例代码,演示如何在JavaFX应用程序中连接到MySQL数据库并实现登录界面:
```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Login extends Application {
// MySQL数据库连接参数
private final String DB_URL = "jdbc:mysql://localhost:3306/test";
private final String DB_USER = "root";
private final String DB_PASS = "password";
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
// JavaFX界面组件
private Label lblUsername = new Label("Username:");
private Label lblPassword = new Label("Password:");
private TextField txtUsername = new TextField();
private PasswordField txtPassword = new PasswordField();
private Button btnLogin = new Button("Login");
@Override
public void start(Stage primaryStage) {
// 创建JavaFX界面
GridPane root = new GridPane();
root.setPadding(new Insets(10));
root.setVgap(10);
root.setHgap(10);
root.add(lblUsername, 0, 0);
root.add(txtUsername, 1, 0);
root.add(lblPassword, 0, 1);
root.add(txtPassword, 1, 1);
root.add(btnLogin, 1, 2);
// 创建场景
Scene scene = new Scene(root, 300, 150);
// 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
// 处理登录按钮的操作事件
btnLogin.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String username = txtUsername.getText().trim();
String password = txtPassword.getText().trim();
try {
pstmt = conn.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?");
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
// 登录成功,重定向到主界面
primaryStage.close();
// TODO: 在此处添加主界面代码
} else {
// 显示错误消息
System.out.println("Invalid username or password");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});
// 显示场景
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
请注意,此示例仅用于演示目的,并且存在安全漏洞。在生产环境中,您应该使用更安全的方法来处理用户凭据,例如哈希密码和使用预编译语句来防止SQL注入攻击。
阅读全文