1. 配置文件
#
db.type = oracle
#
# Oracle
# jar: ojdbc6.jar
# dir: %ORACLE_HOME%/jdbc/lib
# url: http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html
oracle.driver = oracle.jdbc.driver.OracleDriver
oracle.url = jdbc:oracle:thin:@//192.168.1.27:1521/orcl
oracle.user = sys
oracle.password = 1234567a?
oracle.props = internal_logon:sysdba
#
# DB2
# jar: db2jcc4.jar
# dir: %DB2_HOME%/SQLLIB/java
# url: http://www-01.ibm.com/support/docview.wss?uid=swg21363866
db2.driver = com.ibm.db2.jcc.DB2Driver
db2.url = jdbc:db2://192.168.1.27:50000/sample
db2.user = db2admin
db2.password = 123456a?
#
# Sql Server
# jar: sqljdbc4.jar
# url: http://www.microsoft.com/zh-CN/download/details.aspx?displaylang=en&id=11774
sqlserver.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver.url = jdbc:sqlserver://192.168.1.27:1433;databaseName=MyTest
sqlserver.user = user1
sqlserver.password = pass1
#
# MySql
# jar: mysql-connector-java-5.1.26-bin.jar
# url: http://dev.mysql.com/downloads/connector/j/#downloads
mysql.driver = com.mysql.jdbc.Driver
mysql.url = jdbc:mysql://192.168.1.27:3306/dastest
mysql.user = root
mysql.password = 123456a?
mysql.props = useUnicode:yes,characterEncoding:utf8,autoReconnect:true,failOverReadOnly:false
#
# End
2. Java Code
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String propFile = Main.class.getResource("jdbc.properties").getFile();
Properties props = loadJdbcProps(propFile);
//
Class.forName(props.getProperty("driver"));
Connection conn = DriverManager.getConnection(props.getProperty("url"), props);
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("ProductName = " + dbmd.getDatabaseProductName());
System.out.println("ProductVersion = " + dbmd.getDatabaseProductVersion());
conn.close();
}
/**
* load jdbc.properties
* @param propFile
* @return
* @throws IOException
*/
@SuppressWarnings("unchecked")
public static Properties loadJdbcProps(String propFile) throws IOException {
Properties jdbcProps = new Properties();
FileInputStream fin = null;
try {
fin = new FileInputStream(propFile);
Properties allProps = new Properties();
allProps.load(fin);
String dbType = allProps.getProperty("db.type");
String others = allProps.getProperty(dbType + ".props");
int prefixLength = dbType.length() + 1;
Iterator<Entry<String, String>> it = (Iterator)allProps.entrySet().iterator();
while (it.hasNext()) {
Entry<String, String> entry = it.next();
String key = entry.getKey();
if (key.startsWith(dbType)) {
jdbcProps.setProperty(key.substring(prefixLength), entry.getValue());
}
it.remove();
}
jdbcProps.putAll(toMap(others));
}
finally {
try { if (fin != null) { fin.close(); } } catch (Exception e) {}
}
return jdbcProps;
}
/**
* key1:value1,key2:value2 -> map
* @param str
* @return
*/
private static Map<String, String> toMap(String str) {
Map<String, String> map = new HashMap<String, String>();
if (str == null) {
return map;
}
Pattern p = Pattern.compile("(\\w+):(\\w+),?");
Matcher m = p.matcher(str);
while (m.find()) {
map.put(m.group(1), m.group(2));
}
return map;
}
}