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

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

  1. java 加密解密 工具包_java加密解密工具类

    packagecom.founder.mrp.util;importjava.nio.charset.StandardCharsets;importjava.security.Key;importja ...

  2. java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

    最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...

  3. java获取properties属性_java工具类中获取properties文件的属性

    记录获取properties文件属性的工具类 package org.jasig.cas.mylogin.util; import org.slf4j.Logger; import org.slf4j ...

  4. java解析mdb文件_Access MDB文件解析查询,Access数据库解析工具类MdbUtils

    Access MDB文件解析查询,Access数据库解析工具类MdbUtils ================================ ©Copyright 蕃薯耀 2018年9月18日 h ...

  5. java 连接mysql工具类_java连接Mysql数据库的工具类

    一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...

  6. java前补零工具类_java生成编码工具类,不足补0

    ~~~~~ 小小工具类!你值得拥有 简单粗暴,直接上代码 import java.text.NumberFormat; /** * @author: Abner * @description: 编码工 ...

  7. Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

    Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...

  8. Java生成和解析二维码工具类(简单经典)

    Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  9. 记录一下:Java 汉字获取拼音或首字母工具类

    记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...

最新文章

  1. 【2021年度训练联盟热身训练赛第二场】Tip to be Palindrome(python)
  2. JS:a标签传值到js,并动态响应
  3. 深入 Python :Dive Into Python 中文版 读书笔记 第13,14,15单元测试
  4. SpringCloud微服务(07):Zipkin组件,实现请求链路追踪
  5. shopxo二次开发:商品管理添加、商品导入库存、设置库存量(教程)
  6. sharding分表后主键_分库分表【Sharding-JDBC】入门与项目实战
  7. 现外供电电压都达240V,音响系统要不要加稳压器?
  8. java 流常用接口_java 8新特性5--使用集合流式API
  9. 计算机基础技能应用查询中心,计算机基础应用教程
  10. tcping与ping的区别
  11. Javascript笔记大全03
  12. java计算机毕业设计基于Web的上门家教系统的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署
  13. 棋牌PHP域源码,微信棋牌源码下载( h5.super-mans。com Q:2012035031)
  14. fps php,帧率60帧是什么意思
  15. m4a怎么转换成mp4?一个简单好用的操作教程分享
  16. (c语言)字符串的大小写字母转化函数
  17. ​python买书本 青少年编程电子学会python编程等级考试一级真题解析2022年3月
  18. ros2 launch 常见问题
  19. 16.【Linux】window和linux下文件格式相互转换
  20. linux学习步骤(从入门到精通)

热门文章

  1. 如何优化网页转化率?(下篇)
  2. 在Ubuntu 上怎么连接装有iOS 7的iPhone或iPad
  3. 处理iPhone5加长屏幕的4种方法
  4. 修改php上传限制 (phpmyadmin 限制)
  5. Python_百度图片以及百度贴吧图片抓取
  6. 爬虫入门五(Phantomjs和selenium)
  7. 全排列及相关扩展算法(四)——原始中介数通过逆推求原排列算法
  8. 动态规划——最大子矩阵(hdu1081)
  9. CSS——id 和 class 选择器
  10. Java—switch case实现两个数的算术运算