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

如何在当前工作目录的上级目录创建SQLite数据库文件

解决方案

你遇到的问题有两个诱因,分别修正即可:

  • 连接URL存在拼写错误:你写的..db/遗漏了路径分隔符,上级目录的正确写法是../,因此完整的路径前缀应为jdbc:sqlite:../db/
  • SQLite JDBC驱动不会自动创建不存在的父目录,需要你在获取连接前手动创建目标目录。

修正后的完整代码如下:

import java.io.File;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public void createNewDatabase(String dbName) {
    // 先创建父目录
    File dbDir = new File("../db/");
    if (!dbDir.exists()) {
        // mkdirs() 可创建多级不存在的父目录,比mkdir()更稳妥
        boolean dirCreated = dbDir.mkdirs();
        if (!dirCreated) {
            System.out.println("数据库目录创建失败,请检查权限");
            return;
        }
    }

    String dbUrl = "jdbc:sqlite:" + dbDir.getAbsolutePath() + "/" + dbName;
    try (Connection conn = DriverManager.getConnection(dbUrl)) {
        if (conn != null) {
            DatabaseMetaData meta = conn.getMetaData();
            System.out.println("The driver name is " + meta.getDriverName());
            System.out.println("A new database has been created.");
        }

    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }       
}

补充说明

  • 用getAbsolutePath()获取目录的绝对路径可以避免相对路径带来的上下文环境差异问题
  • 目录创建失败时提前终止逻辑,可以避免后续无意义的数据库连接尝试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:18:03