您的位置:首页 > 编程语言 > Java开发

java 数据库读取工具类(读取config.properties配置文件)

2013-01-06 17:23 721 查看
数据库读取工具类
package com.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
* 数据库连接工具类
* @version 1.0
*/
public class JdbcConnection {

// 定义线程本地变量,每个线程访问它都会获得不同的对象
// 使用ThreadLocal使一个连接绑定到一个线程上
private static ThreadLocal<Connection> currentConnection = new ThreadLocal<Connection>();
private static String username=null;            //用户名
private static String password=null;            //密码
private static String dbName=null;                //数据库名称
private static String ip=null;                        //数据库服务器IP地址
private static String resourceName=null;                                        //为null时不使用连接池, jdbc/mysql或jdbc/oracle或jdbc/derby
private static String databaseType = "oracle";

private static void initParams(){
username=DbConfig.getInstance().getDb_username();
password=DbConfig.getInstance().getDb_password();
dbName=DbConfig.getInstance().getDb_name();
ip=DbConfig.getInstance().getIp();
}

/**
*
* @return 得到一个数据库连接
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
Connection conn = currentConnection.get();
if (conn == null) {
if(null==resourceName){
if("mysql".equals(databaseType.toLowerCase())){
conn = getMySqlConnection();
}else if("oracle".equals(databaseType.toLowerCase())){
conn = getOracleConnection();
}else if("derby".equals(databaseType.toLowerCase())){
conn = getDerbyConnection();
}else{
System.out.println("在 JdbcConnection.java 中数据库类型没有设置");
throw new SQLException("数据库类型未设置");
}
}else{
conn = getConnectionByPool();
}
currentConnection.set(conn);
}
return conn;
}
/**
* 关闭Oracle数据库连接
* @throws SQLException
*/
public static void closeConnection() throws SQLException{
Connection conn = currentConnection.get();
conn.close();
currentConnection.set(null);
}
//获得Oracle数据库连接
private static Connection getOracleConnection(){
initParams();
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();    //加载驱动
conn= DriverManager.getConnection("jdbc:oracle:thin:@"+ip+":1521:"+dbName,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("Oracle驱动没找到");
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//获得MySql数据库连接
private static Connection getMySqlConnection(){
initParams();
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();    //加载驱动
String url = "jdbc:mysql://"+ip+":3306/"+dbName+"?useUnicode=true&characterEncoding=utf8";
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("MySql驱动没找到");
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return conn;
}
//获取Derby数据库连接
private static Connection getDerbyConnection(){
initParams();
Connection conn = null;
try {
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();    //加载驱动
String url = "jdbc:derby://"+ip+":1527/"+dbName+";create=true";
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("Derby驱动没找到");
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return conn;
}
//获取连接池连接
private static Connection getConnectionByPool(){
try {
Context ctx = new InitialContext();
Context subContext = (Context)ctx.lookup("java:comp/env");
String dsName="";
dsName = resourceName;

DataSource dataSource = (DataSource)subContext.lookup(dsName);
//上面两句可以合写成下边这句
//ctx.lookup("java:comp/env/jdbc/oracle");// java:comp/env/ 规定:加前缀指定资源
return dataSource.getConnection();
}
catch (NamingException e) {e.printStackTrace();}
catch (SQLException e) {e.printStackTrace();}
return null;
}
}


读取.properties文件

package com.db;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Properties;

/**
* 数据库访问配置文件各参数的获取
* @author lzx
*
*/
public class DbConfig {
//数据库及server配置文件路径
private static final String ACTIONPATH = "config.properties";
private static DbConfig instance=null;

private String db_username=null;
private String db_password=null;
private String db_name=null;
private String ip=null;
private String ags_user=null;
private String ags_password=null;
private String ags_domain=null;
private String ags_host=null;
private String ags_servicename=null;

private DbConfig(){}

public String getDb_username() {
return db_username;
}
public String getDb_password() {
return db_password;
}
public String getDb_name() {
return db_name;
}
public String getIp() {
return ip;
}
public String getAgs_user() {
return ags_user;
}
public String getAgs_password() {
return ags_password;
}
public String getAgs_domain() {
return ags_domain;
}
public String getAgs_host() {
return ags_host;
}
public String getAgs_servicename() {
return ags_servicename;
}

public static DbConfig getInstance(){
if(instance==null){
instance= new DbConfig().getNewDbConfig();
}
return instance;
}

private DbConfig getNewDbConfig(){

DbConfig dc=new DbConfig();
Properties prop = new Properties();
String path=null;
FileInputStream fis=null;

try {
path = DbConfig.class.getClassLoader().getResource("").toURI().getPath();
fis = new FileInputStream(new File(path + ACTIONPATH));
prop.load(fis);
dc.db_username=prop.getProperty("db_username");
dc.db_password=prop.getProperty("db_password");
dc.db_name=prop.getProperty("db_name");
dc.ip=prop.getProperty("ip");
dc.ags_user=prop.getProperty("ags_user");
dc.ags_password=prop.getProperty("ags_password");
dc.ags_domain=prop.getProperty("ags_domain");
dc.ags_host=prop.getProperty("ags_host");
dc.ags_servicename=prop.getProperty("ags_servicename");
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return dc;
}
}


对应的配置文件如下:

config.properties

#database username
db_username=sde
#database password
db_password=sde
#database server name
db_name=RASA
#database server ip
ip=localhost
#arcgis server username
ags_user=zj
#arcgis server password
ags_password=0.
#arcgis server user domain
ags_domain=zj
#arcgis server host address
ags_host=localhost
#arcgis server feature service name
ags_servicename=map
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: