簡體   English   中英

apache tomcat 在 Z93F725A07423FE1C8489F448B33D2 中創建 sqlite 數據庫的新實例

[英]apache tomcat creating new instance of sqlite database in java

I am using an sqlite database in java using xerial sqlite jdbc driver in order to store some data, 1 connection at a time. It worked fine until I decided to use Apache tomcat on my server instead of java sockets (used for testing) and I noticed my queries yielded null results despite data being on the database. 我搜索了這個問題,顯然 tomcat 創建了這個數據庫的一個新實例,它具有相同的表但沒有數據。 我嘗試將我的數據庫移動到資源文件夾中,但這沒有幫助。

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

這就是代碼連接到數據庫的方式。 我相信移動數據庫和更改地址應該可以解決問題,但我不知道去哪里。 謝謝!

您應該能夠在 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 驅動程序)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM