如何使用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
相关产品推荐
相关产品推荐

