DBCP - validationQuery cho các Cơ sở dữ liệu khác nhau


83

Tôi sử dụng nhóm DBCP và tôi muốn sử dụng testOnBorrowtestOnReturn để kiểm tra xem kết nối có còn hợp lệ hay không.
Thật không may, tôi phải đặt thuộc tính validationQuery để làm cho nó hoạt động.

Câu hỏi: Giá trị nào nên có trong validationQuery?

Tôi biết rằng: validationQuery phải là một câu lệnh SQL SELECT, trả về ít nhất một hàng.

Vấn đề là chúng ta sử dụng nhiều cơ sở dữ liệu khác nhau (DB2, Oracle, hsqldb).


Việc sử dụng validationQuery có làm giảm hiệu suất không? Truy vấn này chạy cho mọi kết nối mà ứng dụng nhận được phải không?
yaswanth

Câu trả lời:


206

Không chỉ có một validationQuery cho tất cả các cơ sở dữ liệu. Trên mỗi cơ sở dữ liệu, bạn phải sử dụng validationQuery khác nhau.

Sau vài giờ googling và thử nghiệm, tôi đã thu thập được bảng này:

Xác thực cơ sở dữ liệu

  • hsqldb -select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • Oracle -select 1 from dual
  • DB2 -select 1 from sysibm.sysdummy1
  • mysql -select 1
  • microsoft SQL Server - select 1(được thử nghiệm trên SQL-Server 9.0, 10.5 [2008])
  • postgresql -select 1
  • ingres -select 1
  • trận derby -values 1
  • H2 -select 1
  • Firebird -select 1 from rdb$database

Tôi đã viết về nó trên blog của mình - truy vấn xác thực cho các cơ sở dữ liệu khác nhau .

Trước đó, có một ví dụ về lớp, trả về validationQuery theo trình điều khiển JDBC.

Hoặc có ai có giải pháp tốt hơn?


4
lựa chọn 1 cũng hợp lệ trên postgresql
Danubian Sailor

select 1cũng hoạt động cho Microsoft SQL Server 2014 - 12.0.2000.8 (X64), ngày 20 tháng 2 năm 2014 20:04:26, Phiên bản tiêu chuẩn (64-bit) trên Windows NT 6.1 <X64> (Bản dựng 7601: Gói dịch vụ 1) (Hypervisor)
Yuci

select 1cho Hive và Impala
davidemm

14

Đối với MySQL với trình điều khiển Connector / J, có một truy vấn xác thực nhẹ chỉ gửi một ping đến máy chủ và trả về một tập hợp kết quả giả. Truy vấn xác thực có thể (hoặc phải bắt đầu bằng) chính xác chuỗi sau:

/* ping */

Để biết thêm thông tin hoặc tham khảo Kết nối xác thực trong hướng dẫn sử dụng trình điều khiển MySQL


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.