`

【可复用】【高灵活性】JDBC数据库连接类,properties配置文件读写工具类

阅读更多
/**
 * ReadWriteTools.java
 * 
 * 功能:读写配置文件操作工具类
 * 类名:ReadWriteTools
 * 
 *   ver     			变更日                    	部门               	开发者     			变更内容
 * ─────────────────────────────────────────────────────
 *   V1.00  		2013-9-6          		研发部	         常宝龙          		初版
 *   
 *   Copyright (c) 2008, 2013 Infopower corporation All Rights Reserved.
 */
package com.syxp.mail.common;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

import org.apache.log4j.Logger;

/**
 * 读写配置文件工具类
 * 
 * @author 常宝龙
 * @version Ver 1.0 2013-09-06 新建
 * @since CodingExample Ver 1.0
 * 
 */
public class ReadWriteTools {

	/**
	 * 属性文件路径
	 */
	private static String propertiesPath = "";
	/**
	 * 日志输出
	 */
	private static Logger logger = Logger.getLogger(ReadWriteTools.class);

	/**
	 * 根据主键key读取主键的值value
	 * 
	 * @param key
	 *            键名
	 * @param confPath
	 *            配置文件路径
	 * @return
	 */
	public static String readValue(String key, String confPath) {
		Properties properties = new Properties();
		propertiesPath = System.getProperty("user.dir") + confPath;
		try {
			InputStream is = new BufferedInputStream(new FileInputStream(
					propertiesPath));
			properties.load(is);
			String value = properties.getProperty(key);
			is.close();
			return value;
		} catch (Exception e) {
			logger.error("读取配置文件键值发生错误!", e);
			return null;
		}
	}

	/**
	 * 更新(或插入)一对properties信息(主键及其键值) 如果该主键已经存在,更新该主键的值; 如果该主键不存在,则插件一对键值。
	 * 
	 * @param keyName
	 *            键名
	 * @param keyValue
	 *            键值
	 * @param confPath
	 *            配置文件路径
	 */
	public static void writeProperties(String keyName, String keyValue,
			String confPath) {
		propertiesPath = System.getProperty("user.dir") + confPath;
		try {
			// 调用 HashTable 的方法 put,使用 getProperty 方法提供并行性。
			// 强制要求为属性的键和值使用字符串。返回值是 HashTable 调用 put 的结果。
			// 读配置文件路径
			Properties properties = new Properties();
			properties.load(new FileInputStream(propertiesPath));
			OutputStream os = new FileOutputStream(propertiesPath);
			properties.setProperty(keyName, keyValue);
			// 以适合使用 load 方法加载到 Properties 表中的格式,
			// 将此 Properties 表中的属性列表(键和元素对)写入输出流
			properties.store(os, "Update '" + keyName + "' value");
			os.close();
		} catch (FileNotFoundException e) {
			logger.error("配置文件路径没有找到!", e);
		} catch (IOException e) {
			logger.error("属性文件更新错误", e);
		}
	}
}

 

/**
 * ConnectionDB.java
 * 
 * 功能:JDBC连接数据库
 * 类名:ConnectionDB
 * 
 *   ver     			变更日                    	部门               	开发者     			变更内容
 * ─────────────────────────────────────────────────────
 *   V1.00  		2013-9-9          		研发部	         常宝龙          		初版
 *   
 *   Copyright (c) 2008, 2013 Infopower corporation All Rights Reserved.
 */
package com.syxp.mail.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.log4j.Logger;

/**
 * JDBC数据库连接类
 * 
 * @author 常宝龙
 * @version Ver 1.0 2013-09-09 新建
 * @since CodingExample Ver 1.0
 * 
 */
@SuppressWarnings("static-access")
public class ConnectionDB {

	/**
	 * 日志输出
	 */
	private static Logger logger = Logger.getLogger(ConnectionDB.class);
	/**
	 * 数据库URL地址
	 */
	private static String url = "";
	/**
	 * 数据库用户名
	 */
	private static String dbUser = "";
	/**
	 * 数据库密码
	 */
	private static String dbPwd = "";
	/**
	 * 数据库驱动
	 */
	private static String dbDriver = "";
	/**
	 * 数据库连接类
	 */
	private static Connection conn = null;
	/**
	 * 配置文件路径
	 */
	private static final String confPath = "/conf/jdbc.properties";

	static {
		ReadWriteTools readWriteTools = new ReadWriteTools();
		url = readWriteTools.readValue("url", confPath);
		dbUser = readWriteTools.readValue("dbUser", confPath);
		dbPwd = readWriteTools.readValue("dbPwd", confPath);
		dbDriver = readWriteTools.readValue("dbDriver", confPath);
	}

	/**
	 * 获取数据库连接
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		try {
			Class.forName(dbDriver);
			conn = DriverManager.getConnection(url, dbUser, dbPwd);
			logger.info("连接数据库成功。");
		} catch (ClassNotFoundException e) {
			logger.error("连接数据库失败,数据库驱动类没有找到!", e);
		} catch (SQLException e) {
			logger.error("连接数据库失败,SQLException", e);
		}
		return conn;
	}

	/**
	 * 关闭数据库连接
	 * 
	 * @param conn
	 * @param pstmt
	 * @param rs
	 */
	public static void closeConnection(Connection conn,
			PreparedStatement pstmt, ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
				rs = null;
			}
			if (pstmt != null) {
				pstmt.close();
				pstmt = null;
			}
			if (conn != null) {
				conn.close();
				conn = null;
			}
			logger.info("成功关闭数据库连接");
		} catch (SQLException e) {
			logger.error("关闭数据库连接失败,SQLException", e);
		}

	}
}

 

0
2
分享到:
评论
1 楼 zsf513 2013-10-23  
楼主可看一下api中的ResourceBundle类

相关推荐

    传智播客视频JavaSE学习笔记

    `Properties`类继承自`Hashtable`,用于处理键值对配置信息,常用于读写.properties配置文件。 #### 十二、打印流 `PrintStream`和`PrintWriter`类提供了方便的打印输出方法,常用于标准输出、日志记录等。 #### ...

    技术笔记(第一部分整理)

    `application.properties`文件包含了Spring Boot应用的基本配置信息,如数据库连接信息、日志级别等。 ##### DAO数据层:实体类 实体类通常对应数据库中的表,包含了表中各个字段的映射。这些类通常使用注解来声明...

    Pro.Jakarta.Commons.rar

    10. **Commons Configuration**:提供了一种灵活的方式来管理应用程序的配置,支持多种配置源,如XML、Properties、系统环境变量等。 Jakarta Commons的这些组件遵循模块化设计,可以单独使用,也可以组合使用以...

    spring小程序

    例如,可能有配置文件(如`application.properties`或`yaml`),展示了如何设置Spring Boot的属性;`test`可能是一个控制器类,演示了如何处理HTTP请求;还可能包含了数据库连接和数据访问的配置,以及使用了AOP进行...

    ibatis参考文档

    通过`SqlMapClientBuilder`等工具类可以方便地加载配置文件并初始化iBATIS环境。 ##### 2. Transactions iBATIS支持自动提交事务和手动控制事务两种方式。 ##### 3. Multi-Threaded Programming 为了支持多线程...

Global site tag (gtag.js) - Google Analytics