Servlet 使用旧 SQL 数据
Servlet works with old SQL data
我有一个奇怪的问题,我正在使用 java servlet 和 SQLite 开发 Web 应用程序,使用 Jquery 作为前端。到目前为止它已经成功但是最近当我手动删除或添加一些东西到数据库(从 SQLite Studio)并重新启动服务器时,我仍然得到旧数据,就像根本没有加载新数据一样,我只有实际删除的数据。
例如我的数据库中有 10 部电影,并从 SQLite Studio 中删除了其中的 3 部电影,但是当我加载应用程序时,我仍然有 10 部电影。
有没有办法重新初始化数据库?我有一些关于清除缓存的红色信息,但没有成功。
顺便说一句,我删除了 SQLite Studio 中的数据库并创建了一个具有相同名称和数据的新数据库。也许这就是问题所在,我需要以某种方式重新初始化它
这是我的 ConnectionManager,直到今天它一直运行良好(在这个应用程序上工作了一个多月)。
public class ConnectionManager {
private static final String DATABASE_NAME = "cinema.db";
private static final String FILE_SEPARATOR = System.getProperty("file.separator");
private static final String WINDOWS_PATH = "C:" + FILE_SEPARATOR + "Users" + FILE_SEPARATOR +
"Marnitzinho" + FILE_SEPARATOR + "Documents" + FILE_SEPARATOR + DATABASE_NAME;
private static final String LINUX_PATH = "SQLite" + FILE_SEPARATOR + DATABASE_NAME;
private static final String PATH = WINDOWS_PATH;
private static Connection connection;
public static void open() {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:" + PATH);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static Connection getConnection() {
return connection;
}
public static void close() {
try {
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
初始化监听器
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
ConnectionManager.close();
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Initialization....");
ConnectionManager.open();
System.out.println("Done!");
}
}
web.xml
<listener>
<listener-class>cinema.dao.InitListener</listener-class>
</listener>
这是包含路径和其他信息的文件图片https://imgur.com/xWFGSYY
感谢任何形式的帮助,真的坚持这一点。
编辑:我创建了新文件并连接到它,但现在我明白了,
[SQLITE_ERROR] SQL error or missing database (no such table: movies)
但是有这样的table...
我通过制作新的 db 文件并将其移动到项目目录中解决了这个问题。
我有一个奇怪的问题,我正在使用 java servlet 和 SQLite 开发 Web 应用程序,使用 Jquery 作为前端。到目前为止它已经成功但是最近当我手动删除或添加一些东西到数据库(从 SQLite Studio)并重新启动服务器时,我仍然得到旧数据,就像根本没有加载新数据一样,我只有实际删除的数据。
例如我的数据库中有 10 部电影,并从 SQLite Studio 中删除了其中的 3 部电影,但是当我加载应用程序时,我仍然有 10 部电影。
有没有办法重新初始化数据库?我有一些关于清除缓存的红色信息,但没有成功。
顺便说一句,我删除了 SQLite Studio 中的数据库并创建了一个具有相同名称和数据的新数据库。也许这就是问题所在,我需要以某种方式重新初始化它
这是我的 ConnectionManager,直到今天它一直运行良好(在这个应用程序上工作了一个多月)。
public class ConnectionManager {
private static final String DATABASE_NAME = "cinema.db";
private static final String FILE_SEPARATOR = System.getProperty("file.separator");
private static final String WINDOWS_PATH = "C:" + FILE_SEPARATOR + "Users" + FILE_SEPARATOR +
"Marnitzinho" + FILE_SEPARATOR + "Documents" + FILE_SEPARATOR + DATABASE_NAME;
private static final String LINUX_PATH = "SQLite" + FILE_SEPARATOR + DATABASE_NAME;
private static final String PATH = WINDOWS_PATH;
private static Connection connection;
public static void open() {
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:" + PATH);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static Connection getConnection() {
return connection;
}
public static void close() {
try {
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
初始化监听器
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
ConnectionManager.close();
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Initialization....");
ConnectionManager.open();
System.out.println("Done!");
}
}
web.xml
<listener>
<listener-class>cinema.dao.InitListener</listener-class>
</listener>
这是包含路径和其他信息的文件图片https://imgur.com/xWFGSYY
感谢任何形式的帮助,真的坚持这一点。
编辑:我创建了新文件并连接到它,但现在我明白了,
[SQLITE_ERROR] SQL error or missing database (no such table: movies)
但是有这样的table...
我通过制作新的 db 文件并将其移动到项目目录中解决了这个问题。