gpt4 book ai didi

java - Java Web App Servlet 中的 SQLite JDBC

转载 作者:行者123 更新时间:2023-12-01 11:35:03 25 4
gpt4 key购买 nike

我对开发 Web 应用程序相对较新,目前正在开发 Java servlet Web 应用程序,并且需要一个临时数据库来存储在范围内运行的方法的输出。该方法完成后,我将查询数据库以检索我需要的结果,然后将其返回到 servlet 以在网页中提供。由于数据库中会有大量的 i/o,并且一旦该方法完成就不需要持久化数据库,所以我认为像 SQLite JDBC 这样的轻量级数据库会工作得最好。 https://bitbucket.org/xerial/sqlite-jdbc/downloads

这是我计划用来实例化数据库的代码:

Connection c = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:test.db");
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("Opened database successfully");

问题:SQLite 是否可以像这样运行:在方法处于作用域内时实例化数据库,然后在方法和线程完成后一旦方法超出作用域,数据库就会被删除?

最佳答案

德克兰

您正在创建一个外部资源,它是与数据库的连接。您负责在从方法返回之前关闭资源。幸运的是,Java 提供了一个很好的方法来做到这一点,使用 try with resources 。您可以执行以下操作:


Class.forName("org.sqlite.JDBC");
尝试(最终连接c = DriverManager.getConnection(“jdbc:sqlite:test.db”);){
//...从数据库写入和读取
} catch ( 异常 e ) {
System.err.println( e.getClass().getName() + ": "+ e.getMessage() );
//-- 还没有退出: System.exit(0);
}
//...不要忘记删除test.db

此外,由于这是一个 servlet,因此您可能有多个线程创建同名的文件。看看是否能找到一种方法来唯一命名数据库文件。

苏阿莱赫。

关于java - Java Web App Servlet 中的 SQLite JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com