2012-11-14 2 views
2

JDBCTemplate 및 메모리 내장 데이터베이스를 사용하는 단위 테스트가 있습니다. 내 HSQLDB 설정은 다음과 같습니다 : 나는 테이블을 만든 다음 모든 데이터가에 새 레코드를 삽입하기 전에 JdbcTemplate을 통해 존재하는지 확인하려고HSQLDB 메모리 내 데이터베이스 JDBC 템플릿 쿼리 실패

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

.

나는 다음과 같이 JdbcTemplate을 통해 JDBC 쿼리를 호출하고 있습니다 :

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

, 나는 다음과 같이 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> 

를 I라는 오류를 얻고있다

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

메모리 데이터베이스에서 제거하고 실제로 Oracl에 연결하면 동일한 코드가 작동합니다 전자 데이터베이스지만 메모리 데이터베이스에 필요한 테스트.

도와 주시겠습니까?

감사

+0

아마도 코드를 게시하면 도움이 될 수 있습니다. – remigio

+1

왜'jdbcTemplate.update()'메서드를 사용합니까? 나는 당신이'query','execute' 또는 유사한 것을 사용해야한다고 생각합니다. 예를 들어'queryForInt' 메소드입니다. – sabadow

답변

3

당신은 JdbcTemplate.query 방법을 사용한다는 update 방법은 삽입을위한// 업데이트 문을 삭제합니다. 예 :

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

감사합니다.이 문제를 해결합니다. – Sai

+0

jdbcTemplate.query()를 사용하여 저장 프로 시저를 호출 할 때 동일한 예외가 발생합니다. –

관련 문제