针对不同数据库的validationQuery
DBCP针对不同数据库的validationQuery
当你使用DBCP连接池时,你可以通过设置testOnBorrow和testOnReturn属性测试这个连接是否可用。不幸的是你还需要设置validationQuery才能起作用。那么问题来了如何设置validationQuery这个值呢?
什么是validationQuery?
validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQuery。
DataBasevalidationQueryhsqldbselect 1 from INFORMATION_SCHEMA.SYSTEM_USERSOracleselect 1 from dualDB2select 1 from sysibm.sysdummy1MySqlselect 1Microsoft SqlServerselect1postgresqlselect version()ingresselect 1derbyvalues 1H2select 1
根据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

相关推荐
专注前端开发 2020-10-21
苏康申 2020-11-13
vitasfly 2020-11-12
oraclemch 2020-11-06
liuyang000 2020-09-25
FellowYourHeart 2020-10-05
赵继业 2020-08-17
whyname 2020-08-16
Seandba 2020-08-16
dbasunny 2020-08-16
拼命工作好好玩 2020-08-15
langyue 2020-08-15
写程序的赵童鞋 2020-08-03
Accpcjg 2020-08-02
tydldd 2020-07-30
好记忆也需烂 2020-07-28
jianghero 2020-07-28