You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java(BlueJ)获取项目文件夹下的SQLite数据库列表

Java SQLite 扫描项目目录数据库实现方案

SQLite 属于单文件嵌入式数据库,和 MySQL 的客户端-服务端架构完全不同:不需要连接服务端查询系统表获取库列表,直接扫描指定目录下的SQLite格式文件即可实现需求。

前置准备

确保你已经在BlueJ项目中导入了SQLite JDBC驱动包(通常为sqlite-jdbc-<版本号>.jar),下载后在BlueJ项目设置中添加到依赖库即可使用。

步骤1:扫描项目目录获取数据库并存为变量

以下代码会扫描指定目录下所有常见后缀的SQLite数据库,分别将数据库名称、文件路径存入全局List变量,后续切换数据库可直接从变量中取值:

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;

public class SQLiteDbManager {
    // 存储所有数据库文件名的变量
    public static List<String> dbNameList = new ArrayList<>();
    // 存储所有数据库绝对路径的变量,后续连接数据库直接使用
    public static List<String> dbPathList = new ArrayList<>();

    // 扫描指定目录下的所有SQLite数据库
    public static void scanDbDir(String dirPath) {
        File projectDir = new File(dirPath);
        // 文件名过滤器:匹配常见SQLite数据库后缀,可根据你的实际后缀自定义
        FilenameFilter dbFilter = (dir, name) -> {
            String lowerName = name.toLowerCase();
            return lowerName.endsWith(".db") 
                    || lowerName.endsWith(".sqlite") 
                    || lowerName.endsWith(".db3")
                    || lowerName.endsWith(".sqlite3");
        };

        File[] dbFiles = projectDir.listFiles(dbFilter);
        if (dbFiles != null) {
            for (File file : dbFiles) {
                dbNameList.add(file.getName());
                dbPathList.add(file.getAbsolutePath());
            }
        }
    }

    public static void main(String[] args) {
        // 传入BlueJ项目根目录路径,"./"代表当前项目根目录
        scanDbDir("./");
        
        // 测试打印扫描到的数据库
        System.out.println("已扫描到的数据库:");
        for (String name : dbNameList) {
            System.out.println(name);
        }
    }
}

步骤2:切换使用指定数据库

需要连接对应数据库时,直接从dbPathList变量中取出对应路径拼接JDBC连接串即可:

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

public static Connection getDbConnection(int index) throws SQLException {
    if (index < 0 || index >= dbPathList.size()) {
        throw new IllegalArgumentException("索引超出数据库列表范围");
    }
    String jdbcUrl = "jdbc:sqlite:" + dbPathList.get(index);
    return DriverManager.getConnection(jdbcUrl);
}

注意事项

  • 上述代码仅扫描指定目录的一级文件,如果你的数据库存放在项目子目录中,可将扫描逻辑修改为递归遍历子目录的版本。
  • 如果你使用了自定义的SQLite数据库后缀,在文件名过滤器中补充对应后缀规则即可。

内容的提问来源于stack exchange,提问作者Dimas Alfiansyah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:15:05