JavaFX轻松入门:数据库应用指南 (java fx入门 数据库)

JavaFX是目前非常流行的用于开发桌面应用程序的Java框架,其结合了Java语言的稳定性与可靠性以及现代化图形用户界面(GUI)的设计风格。JavaFX通过提供许多JavaFX库和相关工具,为开发者提供了丰富的应用程序开发功能。这篇文章将介绍JavaFX如何轻松地应用于数据库操作,并提供一些有用的技巧与建议,帮助您更好地开发JavaFX应用程序。

数据库是当今大多数企业的核心,它保存了企业的所有数据和关键信息。因此,了解如何使用JavaFX与数据库交互通信是非常重要的。JavaFX通过提供用于连接各种数据库的API(应用程序接口),使数据库操作变得更加容易。这些API包括JDBC(Java数据库连接)API和JavaFX的一些内置API。在本文中,我们将讨论如何使用JDBC连接到数据库,并通过使用JavaFX的内置API来简化操作。

之一步:JDBC(Java数据库连接)API

JDBC(Java数据库连接)API是Java平台的标准API,它用于连接到各种数据库,并与它们交互。 JDBC库提供了一种方法来连接到几乎所有主要数据库系统(包括MySQL,Oracle,PostgreSQL等),并且由于JDBC是标准API,因此对于连接不同数据库系统的开发者来说,学习成本非常低。

以下是使用JDBC连接到数据库的简单步骤:

1. 导入所需的JDBC库文件。

2. 加载JDBC驱动程序。

3. 使用驱动程序管理器获取数据库连接。

4. 创建并执行所需的SQL查询语句。

5. 获取查询结果并处理它们。

使用JDBC连接到数据库时,需要知道以下几个重要的连接参数:

数据库URL:这是连接到数据库的地址,通常包括服务器名称,端口号,数据库名称和用户名密码等信息。在JDBC中,它通常以jdbc:mysql://localhost:3306/mydb作为格式表示。

用户名和密码:这些参数用来验证连接到数据库的身份凭证。

以下是一个使用JDBC连接到MySQL数据库的简单示例:

// 导入JDBC库

import java.sql.*;

public class JDBCTest {

public static void mn(String[] args) {

Connection conn = null;

Statement stmt = null;

try {

//注册JDBC驱动

Class.forName(“com.mysql.jdbc.Driver”);

//连接到数据库

System.out.println(“Connecting to database…”);

conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”username”,”password”);

//查询数据库

System.out.println(“Creating statement…”);

stmt = conn.createStatement();

String sql;

sql = “SELECT id, name, age FROM customers”;

ResultSet rs = stmt.executeQuery(sql);

//处理查询结果

while(rs.next()){

int id = rs.getInt(“id”);

String name = rs.getString(“name”);

int age = rs.getInt(“age”);

System.out.print(“ID: ” + id);

System.out.print(“, Name: ” + name);

System.out.println(“, Age: ” + age);

}

//释放资源

rs.close();

stmt.close();

conn.close();

} catch (SQLException se) {

//Handle errors for JDBC

se.printStackTrace();

} catch (Exception e) {

//Handle errors for Class.forName

e.printStackTrace();

} finally {

//finally block used to close resources

try {

if (stmt != null)

stmt.close();

} catch (SQLException se2) {

} // nothing we can do

try {

if (conn != null)

conn.close();

} catch (SQLException se) {

se.printStackTrace();

}//end finally try

}//end try

System.out.println(“Goodbye!”);

}//end mn

}//end JDBCTest

以上代码通过使用JDBC连接到本地MySQL数据库,并查询其customers表的数据。在这个例子中,我们首先注册了JDBC驱动程序,然后使用getConnection()方法连接到数据库。接着,我们使用Statement对象执行SQL查询语句,并通过while循环遍历查询结果。我们释放资源并断开与数据库的连接。

第二步:JavaFX内置数据库操作API

JavaFX内置了一些用于数据库操作的API,使得与数据库之间交互变得更加容易。以下是一些JavaFX数据库API的示例:

1. javafx.scene.control.TableColumn:用于呈现查询结果的表格列。

2. javafx.collections.ObservableList:用于存储查询结果的可观察对象列表。

3. javafx.beans.property.SimpleStringProperty:用于构建表格列数据的属性类。

4. javafx.scene.control.TableView:用于显示表格列和查询结果的表格视图。

5. javafx.scene.control.TextField:用于从用户输入中获取数据。

下面是一个简单的JavaFX数据库程序示例,它使用JavaFX的内置API读取MySQL数据库中的数据,并显示在JavaFX的表格视图中。

// 导入JavaFX库

import javafx.application.Application;

import javafx.beans.property.SimpleStringProperty;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

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.TableColumn;

import javafx.scene.control.TableView;

import javafx.scene.control.TextField;

import javafx.scene.layout.BorderPane;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

import java.sql.*;

public class JavaFXDatabaseApplication extends Application {

private final ObservableList data =

FXCollections.observableArrayList();

private void initData() {

Connection conn = null;

Statement stmt = null;

try {

Class.forName(“com.mysql.jdbc.Driver”);

conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”,”username”,”password”);

stmt = conn.createStatement();

String sql;

sql = “SELECT * FROM customers”;

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()){

data.add(new Customer(rs.getInt(“id”), rs.getString(“name”), rs.getInt(“age”)));

}

rs.close();

stmt.close();

conn.close();

} catch (SQLException se) {

se.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (stmt != null)

stmt.close();

} catch (SQLException se2) {

}

try {

if (conn != null)

conn.close();

} catch (SQLException se) {

se.printStackTrace();

}

}

}

private BorderPane createUI() {

TableView table = new TableView();

table.setEditable(false);

TableColumn idColumn = new TableColumn(“ID”);

idColumn.setMinWidth(100);

idColumn.setCellValueFactory(

cellData -> new SimpleStringProperty(Integer.toString(cellData.getValue().getId())));

TableColumn nameColumn = new TableColumn(“Name”);

nameColumn.setMinWidth(100);

nameColumn.setCellValueFactory(

cellData -> new SimpleStringProperty(cellData.getValue().getName()));

TableColumn ageColumn = new TableColumn(“Age”);

ageColumn.setMinWidth(100);

ageColumn.setCellValueFactory(

cellData -> new SimpleStringProperty(Integer.toString(cellData.getValue().getAge())));

table.setItems(data);

table.getColumns().addAll(idColumn, nameColumn, ageColumn);

final TextField nameField = new TextField();

nameField.setPromptText(“Enter name”);

nameField.setMaxWidth(nameColumn.getPrefWidth());

final TextField ageField = new TextField();

ageField.setPromptText(“Enter age”);

final Button addButton = new Button(“Add”);

addButton.setOnAction(new EventHandler() {

@Override public void handle(ActionEvent e) {

data.add(new Customer(data.size() + 1,

nameField.getText(),

Integer.parseInt(ageField.getText())));

nameField.clear();

ageField.clear();

}

});

VBox vbox = new VBox();

vbox.setSpacing(5);

vbox.setPadding(new Insets(10, 0, 0, 10));

vbox.getChildren().addAll(nameField, ageField, addButton);

BorderPane borderPane = new BorderPane();

borderPane.setCenter(table);

borderPane.setBottom(vbox);

return borderPane;

}

@Override public void start(Stage primaryStage) throws Exception {

initData();

primaryStage.setTitle(“JavaFX Database Application”);

primaryStage.setScene(new Scene(createUI()));

primaryStage.show();

}

public static void mn(String[] args) {

launch(args);

}

}

该程序通过使用JavaFX的内置API和JDBC连接MySQL数据库,展示了一张包含ID,姓名和年龄的表格。您可以使用文本字段来添加新的客户,并将其添加到表格中。该程序使用了JavaFX的布局管理器BorderPane,该容器可以将界面分成五个部分。在这个示例中,表视图被放在center的位置,而用户输入字段和添加按钮则在底部部分。

结论


数据运维技术 » JavaFX轻松入门:数据库应用指南 (java fx入门 数据库)