validationQuery驗證數據庫連接
阿新 • • 發佈:2017-09-13
return pre .post urn key name body ref schema
validationQuery是用來驗證數據庫連接的查詢語句,這個查詢語句必須是至少返回一條數據的SELECT語句。每種數據庫都有各自的驗證語句,下表中收集了幾種常見數據庫的validationQuery。
DataBase | validationQuery |
---|---|
hsqldb | select 1 from INFORMATION_SCHEMA.SYSTEM_USERS |
Oracle | select 1 from dual |
DB2 | select 1 from sysibm.sysdummy1 |
MySql | select 1 |
Microsoft SqlServer | select1 |
postgresql | select version() |
ingres | select 1 |
derby | values 1 |
H2 | select 1 |
如果你想支持多種數據庫,你可以根據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
validationQuery驗證數據庫連接