javafx登录界面连接数据库
时间: 2023-08-26 11:04:55 浏览: 51
要连接数据库,您需要使用Java Database Connectivity(JDBC)API。以下是一个简单的JavaFX登录界面示例,其中使用JDBC连接到MySQL数据库:
```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.stage.Stage;
public class LoginApp extends Application {
private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "password";
private static final String LOGIN_QUERY = "SELECT * FROM users WHERE username = ? AND password = ?";
private TextField usernameField;
private PasswordField passwordField;
private Label statusLabel;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Login");
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(5);
grid.setHgap(5);
Label usernameLabel = new Label("Username:");
GridPane.setConstraints(usernameLabel, 0, 0);
usernameField = new TextField();
GridPane.setConstraints(usernameField, 1, 0);
Label passwordLabel = new Label("Password:");
GridPane.setConstraints(passwordLabel, 0, 1);
passwordField = new PasswordField();
GridPane.setConstraints(passwordField, 1, 1);
Button loginButton = new Button("Login");
GridPane.setConstraints(loginButton, 1, 2);
loginButton.setOnAction(e -> handleLogin());
statusLabel = new Label();
GridPane.setConstraints(statusLabel, 1, 3);
grid.getChildren().addAll(usernameLabel, usernameField, passwordLabel, passwordField, loginButton, statusLabel);
Scene scene = new Scene(grid, 300, 150);
primaryStage.setScene(scene);
primaryStage.show();
}
private void handleLogin() {
String username = usernameField.getText();
String password = passwordField.getText();
try {
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
PreparedStatement stmt = conn.prepareStatement(LOGIN_QUERY);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
statusLabel.setText("Login successful");
} else {
statusLabel.setText("Incorrect username or password");
}
conn.close();
} catch (SQLException e) {
statusLabel.setText("Database error");
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个示例中,我们使用了一个GridPane布局,包含了一个用户名文本框、一个密码文本框、一个登录按钮和一个状态标签。当用户点击登录按钮时,我们使用JDBC连接到MySQL数据库,执行一个查询来检查用户提供的用户名和密码是否正确。如果查询返回结果,则显示“登录成功”消息,否则显示“用户名或密码不正确”消息。如果发生数据库错误,则显示“数据库错误”消息。
请注意,这个示例中使用的是MySQL数据库,您需要将DB_URL、DB_USER和DB_PASSWORD变量替换为您自己的数据库连接信息。此外,您还需要下载MySQL JDBC驱动程序,并将其添加到您的项目中。