java - 如何在 Tomcat 6 中配置 SQLite?

标签 java sqlite tomcat jdbc

能否请您提供如何在tomcat 6 中使用sqlite 的步骤?我正在使用 Xerial sqlite jdbc 驱动程序。在我的应用程序中,我有多个 sqlite 数据库(.db 文件)并且需要连接到不同的 sqlite 数据库,具体取决于登录的用户?我可以将所有 .db 文件放在哪里 - 在 webapp 根目录中或系统上的任何位置或在 WEB-INF 中?

谢谢,

最佳答案

我刚刚完成了使用 Tomcat 7 配置 sqlite3。现在一切正常,所以我想分享我的设置。
- 下载位于 sqlite-jdbc-3.7.2.jar(或任何最新版本)中的 JDBC 驱动程序 (org.sqlite.JDBC)。 https://bitbucket.org/xerial/sqlite-jdbc/downloads
并将其复制到你的Tomcat/lib
- 您可以将 sqlite 数据库复制到任何您想要的地方。对于我的设置,我在我的 tomcat 安装下创建了一个“dbs”目录,并将其放在那里。

现在设置您的应用程序。如果您没有 META-INF/context.xml 文件,请创建一个。这是一个最小的文件:

<?xml version="1.0" encoding="UTF-8"?>
<Context>  
  <Resource name="jdbc/yourdb" 
            auth="Container" 
            type="javax.sql.DataSource" 
            driverClassName="org.sqlite.JDBC"
            url="jdbc:sqlite:/${catalina.home}/dbs/yourDB.db"
            factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory">
  </Resource>
</Context>

然后将以下内容添加到 WEB-INF/web.xml 中:

<resource-ref>
    <description>Reviews Database</description>
    <res-ref-name>jdbc/yourdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

此时,您应该可以开始了。下面是一些用于访问数据库的示例代码(我有一个包含“用户名”列的“admin”表):

public String getName() {
    LOG.info("getting name : " + this.name);
    try {
          Context ctx = new InitialContext();
          DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/yourdb");
          Connection conn = ds.getConnection();
          Statement stat = conn.createStatement();
          ResultSet rs = stat.executeQuery("select username from admin");
          this.name = rs.getString(1);
    } catch (SQLException se) {
          LOG.info(se.toString());
    } catch (NamingException ne) {
          LOG.info(ne.toString());
    }
    return this.name;
}

注意:一些 tomcat 发行版默认不附带 tomcat.dbcp,如果您遇到问题,引用 commons 附带的 dbcp 类可能更容易,org.apache.commons.dbcp.BasicDataSourceFactory。我的 tomcat7 安装中没有包含 tomcat.dbcp 这个问题,一旦我切换了 context.xml 中的引用,一切正常。

关于java - 如何在 Tomcat 6 中配置 SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4279632/

相关文章:

java - 如何在 Android SQLite 的 where 子句中包含参数?

python - 在当前目录之上创建数据库文件

java - 使用 tomcat 阀重定向 POST 请求

java - 在 Vaadin 中打开指向文件的链接

java - 如何将 A 类与 B 类关联起来,并从 A 类中的方法返回对 B 类的引用?

java - 为什么我无法读取 ResultSet 中的下一行

java - 我如何使用带有 jax-rs 的属性文件?

java - 属性文件中的选择模式

java - 我可以在已打开的 JTDS 连接上更改 'appName' 吗?

java - 在 Java webapp 中查找未使用的代码