javafx写一个登陆界面连接数据库 可以实现用户登录和注册
时间: 2024-04-30 17:18:02 浏览: 184
java 连接数据库实现用户登录功能
好的,下面是一个简单的JavaFX登陆界面连接数据库的示例:
首先,我们需要创建一个包含用户名和密码字段的数据库表。假设我们已经创建了一个名为“users”的表,并且包含“username”和“password”两个字段。
接下来,我们需要创建一个JavaFX界面。在这个例子中,我们将创建一个包含两个文本框和两个按钮的界面,用于用户输入用户名和密码,以及进行登录和注册操作。
```java
import javafx.application.Application;
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.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class LoginApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// 创建一个网格布局
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
// 添加界面元素
Label sceneTitle = new Label("Welcome");
sceneTitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(sceneTitle, 0, 0, 2, 1);
Label userName = new Label("User Name:");
grid.add(userName, 0, 1);
TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);
Label pw = new Label("Password:");
grid.add(pw, 0, 2);
PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);
Button loginBtn = new Button("Login");
Button registerBtn = new Button("Register");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().addAll(loginBtn, registerBtn);
grid.add(hbBtn, 1, 4);
// 创建一个场景并设置到主舞台
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
接下来,我们需要添加登录和注册的功能。我们将使用JavaFX的事件处理程序来实现这些功能。对于登录操作,我们将检查用户输入的用户名和密码是否匹配数据库中的记录。对于注册操作,我们将在数据库中创建一个新的用户记录。
```java
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.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.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class LoginApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// 创建一个网格布局
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
// 添加界面元素
Label sceneTitle = new Label("Welcome");
sceneTitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(sceneTitle, 0, 0, 2, 1);
Label userName = new Label("User Name:");
grid.add(userName, 0, 1);
TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);
Label pw = new Label("Password:");
grid.add(pw, 0, 2);
PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);
Button loginBtn = new Button("Login");
Button registerBtn = new Button("Register");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().addAll(loginBtn, registerBtn);
grid.add(hbBtn, 1, 4);
// 添加事件处理程序
loginBtn.setOnAction(event -> {
String username = userTextField.getText();
String password = pwBox.getText();
if (verifyLogin(username, password)) {
// 登录成功,跳转到主界面
// TODO: 实现跳转逻辑
} else {
// 登录失败,显示错误信息
sceneTitle.setText("Login Failed!");
}
});
registerBtn.setOnAction(event -> {
String username = userTextField.getText();
String password = pwBox.getText();
if (registerUser(username, password)) {
// 注册成功,显示成功信息
sceneTitle.setText("Registration Successful!");
} else {
// 注册失败,显示错误信息
sceneTitle.setText("Registration Failed!");
}
});
// 创建一个场景并设置到主舞台
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
// 验证登录
private boolean verifyLogin(String username, String password) {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "password");
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?")) {
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
// 注册用户
private boolean registerUser(String username, String password) {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false", "root", "password");
PreparedStatement stmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)")) {
stmt.setString(1, username);
stmt.setString(2, password);
stmt.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}
```
注意,在这个例子中,我们使用了Java的JDBC API来连接数据库。你需要根据你的数据库类型和配置来修改这个代码中的连接字符串、用户名和密码。同时,你也需要将MySQL驱动程序添加到你的项目中,以便在运行时加载它。
阅读全文