DBCP针对不同数据库的validationQuery

转载地址 https://blog.csdn.net/zitong_ccnu/article/details/48629017

DBCP针对不同数据库的validationQuery

当你使用DBCP连接池时,你可以通过设置testOnBorrow和testOnReturn属性测试这个连接是否可用。不幸的是你还需要设置validationQuery才能起作用。那么问题来了如何设置validationQuery这个值呢?

什么是validationQuery?

validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQuery。

这里写图片描述

根据JDBC驱动获取validationQuery

如果你想支持多种数据库,你可以根据JDBC驱动来获取validationQuery,这里有个简单的类,根据JDBC驱动名称来获取validationQuery

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ValidationQuery {

    public String getValidationQuery(String driver) {
        Properties properties = loadProperties();
        return properties.getProperty(driver, "");
    }

    private Properties loadProperties() {
        String propertyFilename = "db.validation.properties";
        try {
            Properties props = new Properties();
            InputStream resourceAsStream = this.getClass().
            getClassLoader().getResourceAsStream(propertyFilename);
            props.load(resourceAsStream);
            resourceAsStream.close();
            return props;
        } catch (IOException e) {
            throw new RuntimeException("Cannot load properties file '" + propertyFilename + "'.", e);
        }
    }

    //Example: Get validationQuery for hsqldb
    public static void main(String[] args) {
        System.out.println(new ValidationQuery().getValidationQuery("org.hsqldb.jdbcDriver"));
    }
}

创建“db.validation.properties”文件,并放置在classpath目录下

hsqldb

org.hsqldb.jdbcDriver=select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

Oracle

oracle.jdbc.driver.OracleDriver=select 1 from dual

DB2

com.ibm.db2.jcc.DB2Driver=select 1 from sysibm.sysdummy1

mysql

com.mysql.jdbc.Driver=select 1
org.gjt.mm.mysql.Driver=select 1

microsoft sql

com.microsoft.sqlserver.jdbc.SQLServerDriver=select 1

postgresql

org.postgresql.Driver=select version();

ingres

com.ingres.jdbc.IngresDriver=select 1

derby

org.apache.derby.jdbc.ClientDriver=values 1

H2

org.h2.Driver=select 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值