java properties文件 安全_java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] | 学步园...

java 数据库读取工具类(读取config.properties配置文件)[包含线程安全]

数据库读取工具类

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 currentConnection = new ThreadLocal();

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值