Hsqldb驱动程序随机为null

时间:2012-12-11 17:40:14

标签: java persistence hsqldb

我参与编写一个需要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>

1 个答案:

答案 0 :(得分:0)

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

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

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

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