我们使用jdbc查询sqlite的一个表显示到TableView中
在hello-view的onMouseClicked里面填上“openclick2”,然后在HelloController写上openclick2的相关代码@FXML protected void openclick2() { }。我们要先配置好sqlite的jdbc驱动(略)。openclick2的代码如下:
- protected void openclick2()
- {
- FileChooser fileChooser = new FileChooser();
- fileChooser.setTitle("文件sqlite");
- fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("sqlite", "*.db", "*.db3"));
- // 设置文件选择框的初始目录(可选)
- //fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
- // 显示文件选择框并获取所选文件
- File selectedFile = fileChooser.showOpenDialog(new Stage());
-
- if (selectedFile != null) {
- String fileName = selectedFile.getName();
- String databaseUrl = "jdbc:sqlite:" + selectedFile.getPath();
- try (Connection connection = DriverManager.getConnection(databaseUrl)) {
- Statement statement = connection.createStatement();
- ResultSet resultSet = statement.executeQuery("SELECT * FROM sheet1");
-
- // 清除旧的列
- TableView1.getColumns().clear();
-
- // 获取元数据以动态创建列
- ResultSetMetaData metaData = resultSet.getMetaData();
- int columnCount = metaData.getColumnCount();
- for (int i = 1; i <= columnCount; i++) {
- final int columnIndex = i;
- TableColumn
, Object> column = new TableColumn<>(metaData.getColumnName(i)); - column.setCellValueFactory(param -> new javafx.beans.property.SimpleObjectProperty<>(param.getValue().get(columnIndex - 1)));
- TableView1.getColumns().add(column);
- }
-
- // 加载数据到TableView
- ObservableList
> data = FXCollections.observableArrayList(); - while (resultSet.next()) {
- ObservableList
- for (int i = 1; i <= columnCount; i++) {
- row.add(resultSet.getObject(i));
- }
- data.add(row);
- }
- TableView1.setItems(data);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
我们可以看到jdbc取数据的语句非常的简单,比c#的ado还要简单。
try (Connection connection = DriverManager.getConnection(databaseUrl)) { Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM sheet1");}
Connection 对象:Connection 对象代表与数据库的连接。要连接到数据库,您需要使用 DriverManager 类的 getConnection 方法,该方法接收数据库URL、用户名和密码作为参数。
Statement 对象:Statement 对象用于执行静态SQL语句并返回其生成的结果。
ResultSet 对象:ResultSet 对象代表SQL查询的结果集,通常是通过执行 Statement 对象生成的。
运行效果如下: