我对开发Web应用程序是相对较新的,目前我正在研究Java Servlet Web应用程序,并且需要一个临时数据库来存储在范围内运行的方法中的输出。方法完成后,我将查询数据库以检索我需要的结果,然后将其返回到网页中提供的servlet。由于数据库中会有很多I/O,并且一旦完成该方法,就无需持续数据库,因此我认为像SQLITE JDBC这样的轻重量DB将最有效。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,如果方法在范围中,则在方法中实例化数据库,然后一旦方法完成后,该方法就会删除?
Declan,
您正在创建一个外部资源,这是与数据库的连接。您有责任在从方法返回之前关闭资源。幸运的是,Java提供了一种很好的方法,可以尝试使用资源尝试。您可以做类似的事情:
Class.forName("org.sqlite.JDBC");
try (final Connection c = DriverManager.getConnection("jdbc:sqlite:test.db");) {
// ... write and read from the database
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
// -- do not exit yet: System.exit(0);
}
// ... don't forget to delete test.db
另外,由于这是一个servlet,因此您可以拥有多个线程创建具有相同名称的文件。查看您是否可以找到一种唯一命名数据库文件的方法。
sualeh。