/**
* 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);
}
}
}