一般在使用sqlite的时候都是配置url为绝对路径,但是今天在测试代码的时候想到如果将

项目不到tomcat上之后,db文件总不能一直配置成绝对路径,肯定是项目中的某个位置,

因此对jdbc配置文件进行了修改:

jdbc.url=jdbc:sqlite:blog.db

db文件放在WEB-INF/classes下,运行后发现貌似没有问题,然而事实并不是这样QAQ

因为测试中初始化代码会自动根据bean创建表格,我想是不是生成了一个新的db文件呢,

然后我把初始化关掉之后,果然报错了。。。。。。ORZ,然后我在tomcat的bin目录中

找到了崭新的db文件。

百般尝试之后依旧如此,于是去看源码,然后在org.sqlite.core.CoreConnection中发现了这么一段:

private static final String RESOURCE_NAME_PREFIX = ":resource:";

private void open(int openModeFlags, int busyTimeout) throws SQLException {

// check the path to the file exists

if (!":memory:".equals(fileName) && !fileName.startsWith("file:") && !fileName.contains("mode=memory")) {

if (fileName.startsWith(RESOURCE_NAME_PREFIX)) {

String resourceName = fileName.substring(RESOURCE_NAME_PREFIX.length());

// search the class path

ClassLoader contextCL = Thread.currentThread().getContextClassLoader();

URL resourceAddr = contextCL.getResource(resourceName);

if (resourceAddr == null) {

try {

resourceAddr = new URL(resourceName);

}

catch (MalformedURLException e) {

throw new SQLException(String.format("resource %s not found: %s", resourceName, e));

}

}

try {

fileName = extractResource(resourceAddr).getAbsolutePath();

}

catch (IOException e) {

throw new SQLException(String.format("failed to load %s: %s", resourceName, e));

}

}

else {

File file = new File(fileName).getAbsoluteFile();

File parent = file.getParentFile();

if (parent != null && !parent.exists()) {

for (File up = parent; up != null && !up.exists();) {

parent = up;

up = up.getParentFile();

}

throw new SQLException("path to '" + fileName + "': '" + parent + "' does not exist");

}

// check write access if file does not exist

try {

if (!file.exists() && file.createNewFile())

file.delete();

}

catch (Exception e) {

throw new SQLException("opening db: '" + fileName + "': " + e.getMessage());

}

fileName = file.getAbsolutePath();

}

}

// load the native DB

try {

NativeDB.load();

db = new NativeDB();

}

catch (Exception e) {

SQLException err = new SQLException("Error opening connection");

err.initCause(e);

throw err;

}

db.open((SQLiteConnection)this, fileName, openModeFlags);

setBusyTimeout(busyTimeout);

}

这段代码的大概意思就是在非内存模式且url中开头不是以file:开头的情况下,先判断了url是否是以

:resource:开头,如果是,就以类加载路径进行寻找(获取类加载路径的绝对路径后加载数据库文件),

否则就直接以url路径为绝对路径加载数据库文件

于是对jdbc配置文件进行修改:

jdbc.url=jdbc:sqlite::resource:blog.db

搞定!!!

java连接sqlite数据库 相对路径怎么写_配置sqlite的相对路径相关推荐

  1. java连接access数据库的三种方式以及远程连接

    连接access数据库,网上的内容很多,尝试的过程中也会遇到各种问题,没有特别好的介绍,所以自己想总结一下,日后备用. 这里需要提前说明下,win7系统32bit和64bit默认安装的access都是 ...

  2. 【Java】Java连接Mysql数据库的demo示例

    [Java]Java连接Mysql数据库的demo示例 1.安装mysql数据库 2.下载java-mysql-connector.jar包 3.完成java配置 4.写java代码运行测试 1.安装 ...

  3. java连接Excel数据库读取,写入,操纵Excel表格

    java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...

  4. Java连接mysql数据库的方式,java连接mysql数据库的方式(4句语句)

    1 加载mysql驱动: class.forName("con.mysql.jdbc.Driver").newInstance(); 2 根据数据库路径url,账号,密码进行数据库 ...

  5. 从零开始的java连接sqlserver数据库教程

    通过java连接sqlserver数据库教程 使用的数据库是SQL Server 2008,实现利用java对数据库进行操作. 需要做的准备: SQL Server 2008.JDBC驱动包(sqlj ...

  6. Java连接Oracle数据库(详细!快速上手)

    Java连接Oracle数据库及封装JDBC 如果你点开看到了这篇文章,说明你已经或多或少地通过学校学习亦或是自学了解了 oracle 数据库的基本用法.但是实际在开发程序的时候,我们是不可能手动地去 ...

  7. Java连接MySQL数据库的超级详细步骤(Windows)

    1. 数据准备 1. 下载JDK 下载Java开发工具包JDK,下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads ...

  8. Java 连接Access数据库

    Java 连接Access数据库 maven中央仓库下载UCanAccess驱动包 <!-- https://mvnrepository.com/artifact/net.sf.ucanacce ...

  9. 简单的Java连接MySQL数据库

    简单的Java连接MySQL数据库 最近需要用到Java连接MySQL数据库 Connection conn = null; Statement stmt = null; try {// 连接数据库C ...

最新文章

  1. win7加入域的脚本
  2. centos输入正确的账号和密码登陆不进去
  3. 从ReLU到Sinc,26种神经网络激活函数可视化
  4. 【数理知识】《矩阵论》方保镕老师-第4章-赋范线性空间与矩阵范数
  5. python kafka offset自动提交_Spring-Kafka —— 实现批量消费和手动提交offset
  6. Python自动化运维之常用模块—OS
  7. 谈MicroMessageTest的开始创建
  8. elementui el-upload 删除指定文件
  9. C语言输出规定长度的整数,不够位数前面补零
  10. (美)梅耶(Myers, G. J.) 等《软件测试的艺术(原书第3版)》书籍(第3版)
  11. TS流基本知识【HI3798 AVPLAY播放TS流】
  12. 聚类分析在SPSS上的实现与结果分析——基于SPSS实验报告
  13. Rufus v3.6 最好用的创建USB启动盘,速度嗖嗖的
  14. python全栈工程师视频_python全栈工程师视频教程
  15. keil4找不到c语言头文件路径,keil4中头文件路径设置的方法汇总
  16. 中南大学计算机软件专业曾进,中南大学_2012年校级优秀毕业生名单
  17. 解决vscode的报错:Java 11 or more recent is required to run the Java extension
  18. 【Pigeon源码阅读】服务注册发布流程(四)
  19. python turtle画有趣的图形_Python turtle库绘制简单图形
  20. China Mobile announces acquisition of China Railway Communication, unveiling industry reshuffle

热门文章

  1. Java-理论知识之串行化
  2. 项目、企业文档命名规范
  3. 无线网络技术Mesh解析及解决方案推荐
  4. 腾讯云mysql全日制分析_腾讯云:MySQL数据库的高可用性分析
  5. 转)Linux学习路线
  6. Java多线程锁技术漫谈:乐观锁VS悲观锁
  7. SSM学习——Spring事务(9)
  8. osx修改hosts
  9. 记录下PictureSelector图片库上的坑
  10. python turtle 画树