使用 JavaFX 和 SQLite 进行数据存储

引言

在软件开发中,常常需要使用数据库进行数据存储和管理。JavaFX 是一个用于构建富客户端应用程序的框架,而 SQLite 是一个轻量级的嵌入式数据库引擎。本文将介绍如何在 JavaFX 应用程序中使用 SQLite 进行数据存储,以及如何进行数据库的增删改查操作。

准备工作

在开始之前,我们需要准备以下环境和工具:

  • JDK 8 或更高版本
  • JavaFX SDK
  • SQLite JDBC 驱动(可从官方网站下载)

确保已经正确安装了 JDK 和 JavaFX SDK,并将 SQLite JDBC 驱动的 JAR 文件添加到项目的类路径中。

创建数据库连接

在 JavaFX 中,我们可以使用 javafx.scene.control 包中的 ButtonTextFieldTableView 等控件来构建用户界面。而 SQLite 数据库的操作则需要借助 java.sql 包中的类和接口。

首先,我们需要创建一个 SQLiteHelper 类来管理数据库连接和操作。以下是一个简单的示例代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class SQLiteHelper {
    private Connection connection;

    public SQLiteHelper() {
        try {
            // 连接到 SQLite 数据库
            String url = "jdbc:sqlite:path/to/database.db";
            connection = DriverManager.getConnection(url);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection() {
        return connection;
    }

    public void close() {
        try {
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们通过 DriverManager.getConnection() 方法来连接到 SQLite 数据库。需要注意的是,url 参数指定了数据库文件的路径。如果该文件不存在,则会自动创建一个新的数据库文件。通过 getConnection() 方法可以获取到连接对象,而 close() 方法用于关闭数据库连接。

创建数据表

在 SQLite 中,我们可以使用 SQL 语句来创建和管理数据表。下面是一个创建学生表的示例代码:

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class SQLiteHelper {
    // ...

    public void createStudentTable() {
        String sql = "CREATE TABLE IF NOT EXISTS students (" +
                "id INTEGER PRIMARY KEY AUTOINCREMENT," +
                "name TEXT NOT NULL," +
                "age INTEGER NOT NULL," +
                "score REAL NOT NULL" +
                ")";

        try (Statement statement = connection.createStatement()) {
            statement.executeUpdate(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

上面的代码中,我们使用 CREATE TABLE IF NOT EXISTS 语句创建了一个名为 students 的数据表。该表包含了 idnameagescore 四个字段,分别表示学生的唯一标识、姓名、年龄和分数。

数据库操作

有了数据库连接和数据表,我们就可以进行数据库的增删改查操作了。以下是一些常见的操作示例:

插入数据

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class SQLiteHelper {
    // ...

    public void insertStudent(String name, int age, double score) {
        String sql = "INSERT INTO students (name, age, score) VALUES (?, ?, ?)";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            statement.setString(1, name);
            statement.setInt(2, age);
            statement.setDouble(3, score);
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用 INSERT INTO 语句将一条新的学生记录插入到 students 表中。通过 PreparedStatement 对象我们可以方便地设置参数,并调用 executeUpdate() 方法执行插入操作。

更新数据

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class SQLiteHelper {
    // ...

    public void updateStudent(int id, String name, int age, double score) {
        String sql = "UPDATE students SET name = ?, age = ?, score = ? WHERE id = ?";

        try (PreparedStatement statement = connection.prepareStatement(sql)) {
            statement.setString(1, name);
            statement.setInt(2, age);
            statement.setDouble(3, score);
            statement.setInt(4, id);
            statement