javafx如何将数据库里的信息填进面板中的表格内,需要有数据库连接的那种实现
时间: 2024-02-13 20:04:10 浏览: 115
java实现根据数据库表自动生成实体,支持各种数据库,填入数据库连接参数,运行即可生成
要实现将数据库里的信息填进面板中的表格内,需要进行以下步骤:
1. 连接数据库
2. 查询数据并将查询结果存储到Java对象中
3. 将Java对象集合转换为ObservableList集合
4. 创建TableView对象
5. 创建TableColumn对象
6. 将TableColumn对象添加到TableView对象中
7. 将ObservableList对象设置为TableView对象的数据源
下面是一个简单的示例代码:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TableViewDemo extends Application {
private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_CONNECTION = "jdbc:mysql://localhost:3306/test";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "root";
private static Connection getConnection() {
Connection connection = null;
try {
Class.forName(DB_DRIVER);
connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connection;
}
private static List<Person> getPersonList() {
List<Person> personList = new ArrayList<>();
try (Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM person");
ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
Person person = new Person();
person.setName(resultSet.getString("name"));
person.setAge(resultSet.getInt("age"));
personList.add(person);
}
} catch (SQLException e) {
e.printStackTrace();
}
return personList;
}
@Override
public void start(Stage primaryStage) {
TableView<Person> tableView = new TableView<>();
ObservableList<Person> personList = FXCollections.observableArrayList(getPersonList());
TableColumn<Person, String> nameCol = new TableColumn<>("Name");
nameCol.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn<Person, Integer> ageCol = new TableColumn<>("Age");
ageCol.setCellValueFactory(new PropertyValueFactory<>("age"));
tableView.getColumns().addAll(nameCol, ageCol);
tableView.setItems(personList);
StackPane root = new StackPane(tableView);
Scene scene = new Scene(root, 320, 240);
primaryStage.setTitle("TableView Demo");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
public static class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
}
```
在这个示例中,我们连接了MySQL数据库,并从person表中查询数据。我们将查询结果存储到了一个Person类的对象集合中,并将这个集合转换为了JavaFX的ObservableList集合。然后,我们创建了TableView对象,并将Person类的属性与TableColumn对象的映射关系定义好,最后将ObservableList对象设置为TableView对象的数据源。
阅读全文