`

【可复用】【高灵活性】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类

相关推荐

    通用数据库连接类(配置文件)

    本文将详细介绍如何使用提供的“通用数据库连接类(配置文件)”来实现灵活的数据库访问。这个工具类集成了多种常见数据库(如SQLServer、Oracle、MySQL)的支持,使得开发者无需修改源代码,只需调整配置文件即可...

    Java-jdbc数据库连接池总结.doc

    总的来说,Java JDBC数据库连接池是提升Web应用性能的重要技术,通过有效的连接管理和复用,它降低了数据库操作的开销,提升了系统的稳定性和响应速度。在开发过程中,选择合适的连接池实现,并对其进行合理配置,是...

    jdbc数据库连接池工程文件

    文件名为“demo”,通常包含了配置文件、数据库连接池实现类、以及演示如何在应用程序中使用连接池的代码。 **主要知识点:** 1. **JDBC基础**:JDBC是Java编程语言与数据库交互的一组接口和类,包括DriverManager...

    JDBC数据库辅助类

    这里的"JDBC数据库辅助类"就是这样的一个工具,旨在提高开发效率和代码可维护性。 首先,`JdbcResourceManager`可能是用来管理数据库连接和资源的对象。在JDBC中,`Connection`对象是昂贵的资源,需要正确地打开和...

    jdbc连接mysql工具类

    在Java编程中,JDBC(Java Database Connectivity)是...这个工具类可以极大地简化数据库操作,提高代码的可维护性和复用性。通过Eclipse开发此类工具,可以快速地在MySQL数据库上进行数据操作,实现增删改查等功能。

    JDBC数据库连接池实现原理

    在Java中,使用Oracle数据库需要将这个驱动包添加到项目的类路径中,以便JDBC能够识别并建立与Oracle数据库的连接。 实现JDBC数据库连接池的基本步骤如下: 1. **选择连接池实现**:首先,我们需要选择一个合适的...

    JDBC从入门到放弃-数据库连接使用配置文件方式连接数据库

    - 将数据库连接信息放入配置文件(如properties文件)中,可以提高代码的可维护性和安全性,避免硬编码。例如: ```properties db.url=jdbc:mysql://localhost:3306/mydb db.username=username db.password=...

    JDBC数据库访问工具类 强大 精巧 高效

    总结来说,一个强大的JDBC数据库访问工具类是Java项目中必不可少的一部分,它通过封装和优化JDBC操作,降低了开发难度,提高了代码的可读性和维护性,同时提升了系统的运行效率。在设计和实现这样的工具类时,我们...

    Java jdbc数据库连接池总结.doc

    总结来说,Java JDBC数据库连接池是解决Web应用中数据库访问性能问题的有效工具,通过统一管理和复用数据库连接,降低了系统资源消耗,提高了应用的响应速度和稳定性。合理配置和使用连接池,对于构建高效、稳定的...

    jdbc连接各种数据库

    总的来说,JDBC提供了一种统一的方式来访问不同类型的数据库,使得Java开发者能够编写与数据库无关的代码,提高了代码的复用性和移植性。理解和熟练掌握JDBC连接各种数据库的方法对于Java开发人员来说至关重要。

    jdbc数据库连接池

    JDBC数据库连接池是提升Web应用性能和稳定性的重要工具。通过合理配置和使用DbUtils等辅助库,开发者可以更高效地管理数据库连接,减少编码工作量,提高代码的健壮性和可维护性。理解和掌握JDBC连接池的配置和使用,...

    jdbc连接oracle工具类

    总的来说,创建一个JDBC连接Oracle的工具类能帮助我们更方便、安全地管理和控制数据库连接,提高代码的可维护性和可复用性。在实际开发中,还需要注意异常处理、事务管理、连接池等高级话题,以优化性能和提高系统的...

    Java_jdbc数据库连接池总结

    总之,数据库连接池是Java Web应用中必不可少的一部分,它通过有效的资源管理和复用,显著提升了数据库访问的效率和系统的稳定性。选择合适的连接池组件并进行适当的配置,是构建高效、可靠的数据库访问层的关键。

    JDBC连接oracle数据库

    注意,虽然示例中的代码是在处理MySQL数据库(由文件名 `db_mysql.properties` 暗示),但核心概念同样适用于Oracle数据库,只需更改配置文件中的数据库连接信息即可。例如,URL格式会有所不同,Oracle的URL可能类似...

    读取properties文件工具类

    在Java编程中,`properties`文件通常用于存储配置信息,如数据库连接字符串、系统设置等。这个"读取properties文件工具类"是为了简化程序中对`.properties`文件的读取操作而设计的。通过这样的工具类,开发者可以...

    jdbc 工具类、帮助类

    一个优秀的JDBC工具类或帮助类是为了简化数据库操作,提高代码的可读性和复用性而设计的。在给定的“jdbc 工具类、帮助类”主题中,我们可以探讨以下几个重要的知识点: 1. **连接管理**:在JDBC中,建立和关闭...

    jdbc 连接数据库封装类,可返回map,或者vo(自用)

    标题中的“jdbc 连接数据库封装类,可返回map,或者vo(自用)”指的是一个自定义的Java类库,用于简化Java应用程序通过JDBC(Java Database Connectivity)与数据库的交互。这类库通常会提供方便的方法来执行SQL...

Global site tag (gtag.js) - Google Analytics