HSQLDB内存数据库JDBC模板查询失败

时间:2012-11-14 14:25:52

标签: java hsqldb jdbctemplate

我有一个单元测试,它使用JDBCTemplate和内存数据库。我的HSQLDB设置是:

jdbc.driver.className=org.hsqldb.jdbcDriver
jdbc.url=jdbc\:hsqldb\:mem\:test;DB_CLOSE_DELAY\=-1
jdbc.username=sa
jdbc.password=

我正在创建一个表,然后在插入新记录之前尝试通过JDBCTemplate检查其中是否存在任何数据。

我通过JDBCTemplate调用JDBC查询,如下所示:

String query = "select id from Person where id=?";
int isExist = jdbcTemplate.update(query, "1");

在我的配置xml中,我已经连接了dataSource,如下所示:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="default" autowire="default">
    <property name="driverClassName" value="${jdbc.driver.className}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>

我收到的错误是:

org.hsqldb.HsqlException : statement does not generate a row count

如果我在内存数据库中删除并实际连接到Oracle数据库但我需要在内存数据库中进行测试,则相同的代码可以正常工作。

你能帮忙吗?

由于

1 个答案:

答案 0 :(得分:4)

您应该使用JdbcTemplate.query方法,update方法用于插入/删除/更新语句。例如:

int isExist = jdbcTemplate.queryForInt(query, "1");