[java] DBCP-다른 데이터베이스에 대한 validationQuery

DBCP 풀을 사용하고 testOnBorrowtestOnReturn 을 사용 하여 연결이 여전히 유효한지 테스트 하고 싶습니다 .
불행히도 나는 그것이 작동하도록 속성 validationQuery를 설정해야합니다.

질문 : validationQuery에는 어떤 값이 있어야합니까?

저도 알아요 : validationQuery는 적어도 하나의 행을 반환하는 SQL SELECT 문이어야합니다.

문제는 다양한 데이터베이스 (DB2, Oracle, hsqldb)를 사용한다는 것입니다.



답변

모든 데이터베이스에 대해 하나의 validationQuery 만있는 것은 아닙니다. 각 데이터베이스에서 서로 다른 validationQuery를 사용해야합니다.

몇 시간 동안 인터넷 검색 및 테스트를 수행 한 후이 테이블을 수집했습니다.

데이터베이스 유효성 검사 쿼리 노트

  • HSQLDBselect 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • 오라클select 1 from dual
  • DB2select 1 from sysibm.sysdummy1
  • mysql을select 1
  • 마이크로 소프트 SQL 서버select 1(SQL-서버 9.0, 테스트 10.5 [2008])
  • PostgreSQL을select 1
  • 앵그르select 1
  • 더비values 1
  • H2select 1
  • 파이어 버드select 1 from rdb$database

다양한 데이터베이스에 대한 블로그 유효성 검사 쿼리 에 이에 대해 썼습니다 .

미리 JDBC 드라이버에 따라 validationQuery를 반환하는 클래스의 예가 있습니다.

아니면 누구에게 더 나은 솔루션이 있습니까?


답변

Connector / J 드라이버가있는 MySQL의 경우 서버에 ping을 보내고 더미 결과 집합을 반환하는 간단한 유효성 검사 쿼리가 있습니다. 유효성 검사 쿼리는 정확히 다음 문자열 일 수 있습니다 (또는 시작해야 함).

/* ping */

자세한 내용 은 MySQL 드라이버 설명서의 연결 확인을 참조하십시오.


답변

Informix의 경우 유효성 검사 쿼리는 systables에서 1을 선택합니다.


답변