0

我参与编写一个需要 servlet-> 数据库连接的项目。我正在与另一个使用 HyperSQL (hsqldb) 设计数据库的人合作,我现在正试图通过将他的代码添加到我的代码中来将我的项目与他的项目合并。

不过,关于我的问题。当我复制代码时,它通常可以工作。我几乎没有使用数据库中的数据并将它们与用户输入进行比较的方法。

尝试连接数据库时,我会随机成功或失败,出现以下错误;

Unable to acquire a connection from driver [null]

我当然初始化了一个驱动程序; Class.forName("org.hsqldb.jdbcDriver").newInstance();

现在,当运行我的方法时,有时会成功,有时会失败,这是数据库的 XML 文件;

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
Creates both the HyperSQL databases using hibernate. No password or username is set.
-->
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="monsters" transaction-type="RESOURCE_LOCAL">
    <class>databaseManagement.Monster</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
      <property name="hibernate.connection.username" value=""/>
      <property name="hibernate.connection.password" value=""/>
      <property name="hibernate.connection.url" value="jdbc:hsqldb:monsters"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
  </persistence-unit>
  <persistence-unit name="users" transaction-type="RESOURCE_LOCAL">
    <class>databaseManagement.User</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
      <property name="hibernate.connection.username" value=""/>
      <property name="hibernate.connection.password" value=""/>
      <property name="hibernate.connection.url" value="jdbc:hsqldb:users"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
  </persistence-unit>
</persistence>
4

1 回答 1

0

可能试图在只读目录中打开数据库。

  1. 您需要为两个持久性单元指定用户名。默认用户名是“SA”。

  2. 您在 URL 中指定的数据库的文件路径是相对的。它解析为执行目录。在开发 Web 应用程序时,您需要指定一个可以写入的目录。

一种方法是在路径中包含一个变量,例如“jdbc:hsqldb:file:{$directorypath}/monsters”,其中目录路径是 Web 应用程序数据目录的名称,如 web.xml 中所指定文件。

于 2012-12-11T18:41:25.067 回答