/*
* 下面几行值不要动,请到缺省包下面database.properties去配置
*/
package org.jplus.hyb.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.jplus.util.LoadProperties;
import org.jplus.util.LoggerManage;
/**
* 为数据库进行配置
*
* @version 1.5
* @author hyber-bin
*/
public class DatabaseINI {
/** 数据库类型为MYSQL */
public static final String MYSQL = "mysql";
/** 数据库类型为SQLSERVER */
public static final String SQLSERVER = "sqlserver";
/** 数据库类型为ORACLE */
public static final String ORACLE = "oracle";
/** 数据库类型为ACCESS */
public static final String ACCESS = "access";
/** 数据库配置模型 */
public static LoadProperties hyberbin_config_props;
public static LoadProperties db_config_props;
public static LoadProperties mapping_props;
public static boolean isSqlout;
public static DatabaseINI databaseINI=new DatabaseINI();
private DatabaseINI() {
hyberbin_config_props=new LoadProperties("hyberbin.properties");
String dbConfigPath=hyberbin_config_props.getProperty("DatabaseConfig");
db_config_props = new LoadProperties(dbConfigPath==null||dbConfigPath.trim().equals("")?"database.properties":dbConfigPath);
String typeConfigPath=hyberbin_config_props.getProperty("MappingConfig");
mapping_props =new LoadProperties(typeConfigPath==null||dbConfigPath.trim().equals("")?"typemapping.properties":typeConfigPath);
isSqlout = db_config_props.getProperty("sqlout").equals("true");
LoggerManage.setLoggerClass(hyberbin_config_props.getProperty("Logger"));
}
/**
* 获取一个数据库操作对象
*
* @return
*/
public static DatabaseAccess getDatabase() {
return new DatabaseAccess(getConnection());
}
/**
* 用默认配置文件创建连接
*
* @return Connection
*/
public static Connection getConnection() {
return getConnection(db_config_props.getProperty("driver"), db_config_props.getProperty("url"), db_config_props.getProperty("user"), db_config_props.getProperty("pass"));
}
/**
* 创建指定组的连接
*
* @return Connection
*/
public static Connection getConnection(String group) {
return getConnection(db_config_props.getProperty(group + "-driver"), db_config_props.getProperty(group + "-url"), db_config_props.getProperty(group + "-user"), db_config_props.getProperty(group + "-pass"));
}
/**
* 用提供的参数来创建连接
*
* @return Connection
*/
public static Connection getConnection(String driver, String url, String username, String password) {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception ex) {
LoggerManage.logger.getLogger("DatabaseINI数据库连接错误\t", ex);
}
return conn;
}
/**
* 获得数据库类型
*
* @param conn 数据库连接
* @return
*/
public static String getDatabaseType(Connection conn) {
try {
String name = conn.getMetaData().getDatabaseProductName().toLowerCase();
if (name.contains(MYSQL)) {
return MYSQL;
} else if (name.contains(ACCESS)) {
return ACCESS;
} else if (name.contains(ORACLE)) {
return ORACLE;
} else if (name.contains(SQLSERVER)) {
return SQLSERVER;
}
} catch (SQLException sQLException) {
}
return null;
}
}