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的位置,而用户输入字段和添加按钮则在底部部分。
结论