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
java properties文件 安全_java 数据库读取工具类(读取config.properties配置文件)[包含线程安全] | 学步园...相关推荐
- java 加密解密 工具包_java加密解密工具类
packagecom.founder.mrp.util;importjava.nio.charset.StandardCharsets;importjava.security.Key;importja ...
- java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...
最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...
- java获取properties属性_java工具类中获取properties文件的属性
记录获取properties文件属性的工具类 package org.jasig.cas.mylogin.util; import org.slf4j.Logger; import org.slf4j ...
- java解析mdb文件_Access MDB文件解析查询,Access数据库解析工具类MdbUtils
Access MDB文件解析查询,Access数据库解析工具类MdbUtils ================================ ©Copyright 蕃薯耀 2018年9月18日 h ...
- java 连接mysql工具类_java连接Mysql数据库的工具类
一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...
- java前补零工具类_java生成编码工具类,不足补0
~~~~~ 小小工具类!你值得拥有 简单粗暴,直接上代码 import java.text.NumberFormat; /** * @author: Abner * @description: 编码工 ...
- Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)
Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...
- Java生成和解析二维码工具类(简单经典)
Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...
- 记录一下:Java 汉字获取拼音或首字母工具类
记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...
最新文章
- 【2021年度训练联盟热身训练赛第二场】Tip to be Palindrome(python)
- JS:a标签传值到js,并动态响应
- 深入 Python :Dive Into Python 中文版 读书笔记 第13,14,15单元测试
- SpringCloud微服务(07):Zipkin组件,实现请求链路追踪
- shopxo二次开发:商品管理添加、商品导入库存、设置库存量(教程)
- sharding分表后主键_分库分表【Sharding-JDBC】入门与项目实战
- 现外供电电压都达240V,音响系统要不要加稳压器?
- java 流常用接口_java 8新特性5--使用集合流式API
- 计算机基础技能应用查询中心,计算机基础应用教程
- tcping与ping的区别
- Javascript笔记大全03
- java计算机毕业设计基于Web的上门家教系统的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署
- 棋牌PHP域源码,微信棋牌源码下载( h5.super-mans。com Q:2012035031)
- fps php,帧率60帧是什么意思
- m4a怎么转换成mp4?一个简单好用的操作教程分享
- (c语言)字符串的大小写字母转化函数
- ​python买书本 青少年编程电子学会python编程等级考试一级真题解析2022年3月
- ros2 launch 常见问题
- 16.【Linux】window和linux下文件格式相互转换
- linux学习步骤(从入门到精通)