我在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;
}
这就是代码连接到数据库的方式。我相信移动数据库和改变地址应该可以解决这个问题,但我不知道去哪里。谢谢!
1条答案
按热度按时间qqrboqgw1#
您应该能够在jdbc url中使用现有数据库文件的完整路径,例如:
如果您在windows上,则可能如下所示:
这些是绝对路径的例子。
在您的例子中,jdbc url中的数据库位置
mysqlite.db
,没有其他路径信息。这是一个相对路径,因为它不是以斜杠或驱动器号开头的。这意味着db文件的位置相对于java程序的工作目录(程序启动的地方)。在tomcat的例子中,这是典型的
CATALINA_HOME/bin
目录-其中CATALINA_HOME
通常是安装tomcat的位置(这可能因安装和启动tomcat的方式而异。)我建议您将数据库文件与tomcat分开存放。
(sqlite将在指定的位置创建一个新的空数据库,如果其中一个数据库还不存在的话——因此创建它的不是tomcat,而是sqlite驱动程序)。