apachetomcat在java中创建sqlite数据库的新示例

cetgtptt  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(276)

我在java中使用一个sqlite数据库,使用xerial sqlite jdbc驱动程序来存储一些数据,一次一个连接。它工作得很好,直到我决定在服务器上使用apachetomcat而不是javasockets(用于测试),我注意到尽管数据库中有数据,但我的查询还是产生了空结果。我搜索了这个问题,显然tomcat创建了这个数据库的一个新示例,它有相同的表,但没有数据。我尝试将数据库移到资源文件夹中,但没有任何帮助。

public static Connection getConn() throws SQLException {
      if(c == null){
         c = DriverManager.getConnection("jdbc:sqlite:database.db");
      }
      return c;
   }

这就是代码连接到数据库的方式。我相信移动数据库和改变地址应该可以解决这个问题,但我不知道去哪里。谢谢!

qqrboqgw

qqrboqgw1#

您应该能够在jdbc url中使用现有数据库文件的完整路径,例如:

"jdbc:sqlite:/path/to/your/mysqlite.db"

如果您在windows上,则可能如下所示:

"jdbc:sqlite:C:/path/to/your/mysqlite.db"

这些是绝对路径的例子。
在您的例子中,jdbc url中的数据库位置 mysqlite.db ,没有其他路径信息。这是一个相对路径,因为它不是以斜杠或驱动器号开头的。
这意味着db文件的位置相对于java程序的工作目录(程序启动的地方)。在tomcat的例子中,这是典型的 CATALINA_HOME/bin 目录-其中 CATALINA_HOME 通常是安装tomcat的位置(这可能因安装和启动tomcat的方式而异。)
我建议您将数据库文件与tomcat分开存放。
(sqlite将在指定的位置创建一个新的空数据库,如果其中一个数据库还不存在的话——因此创建它的不是tomcat,而是sqlite驱动程序)。

相关问题