/** * 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); } } }
相关推荐
本文将详细介绍如何使用提供的“通用数据库连接类(配置文件)”来实现灵活的数据库访问。这个工具类集成了多种常见数据库(如SQLServer、Oracle、MySQL)的支持,使得开发者无需修改源代码,只需调整配置文件即可...
总的来说,Java JDBC数据库连接池是提升Web应用性能的重要技术,通过有效的连接管理和复用,它降低了数据库操作的开销,提升了系统的稳定性和响应速度。在开发过程中,选择合适的连接池实现,并对其进行合理配置,是...
文件名为“demo”,通常包含了配置文件、数据库连接池实现类、以及演示如何在应用程序中使用连接池的代码。 **主要知识点:** 1. **JDBC基础**:JDBC是Java编程语言与数据库交互的一组接口和类,包括DriverManager...
这里的"JDBC数据库辅助类"就是这样的一个工具,旨在提高开发效率和代码可维护性。 首先,`JdbcResourceManager`可能是用来管理数据库连接和资源的对象。在JDBC中,`Connection`对象是昂贵的资源,需要正确地打开和...
在Java编程中,JDBC(Java Database Connectivity)是...这个工具类可以极大地简化数据库操作,提高代码的可维护性和复用性。通过Eclipse开发此类工具,可以快速地在MySQL数据库上进行数据操作,实现增删改查等功能。
在Java中,使用Oracle数据库需要将这个驱动包添加到项目的类路径中,以便JDBC能够识别并建立与Oracle数据库的连接。 实现JDBC数据库连接池的基本步骤如下: 1. **选择连接池实现**:首先,我们需要选择一个合适的...
- 将数据库连接信息放入配置文件(如properties文件)中,可以提高代码的可维护性和安全性,避免硬编码。例如: ```properties db.url=jdbc:mysql://localhost:3306/mydb db.username=username db.password=...
总结来说,一个强大的JDBC数据库访问工具类是Java项目中必不可少的一部分,它通过封装和优化JDBC操作,降低了开发难度,提高了代码的可读性和维护性,同时提升了系统的运行效率。在设计和实现这样的工具类时,我们...
总结来说,Java JDBC数据库连接池是解决Web应用中数据库访问性能问题的有效工具,通过统一管理和复用数据库连接,降低了系统资源消耗,提高了应用的响应速度和稳定性。合理配置和使用连接池,对于构建高效、稳定的...
总的来说,JDBC提供了一种统一的方式来访问不同类型的数据库,使得Java开发者能够编写与数据库无关的代码,提高了代码的复用性和移植性。理解和熟练掌握JDBC连接各种数据库的方法对于Java开发人员来说至关重要。
JDBC数据库连接池是提升Web应用性能和稳定性的重要工具。通过合理配置和使用DbUtils等辅助库,开发者可以更高效地管理数据库连接,减少编码工作量,提高代码的健壮性和可维护性。理解和掌握JDBC连接池的配置和使用,...
总的来说,创建一个JDBC连接Oracle的工具类能帮助我们更方便、安全地管理和控制数据库连接,提高代码的可维护性和可复用性。在实际开发中,还需要注意异常处理、事务管理、连接池等高级话题,以优化性能和提高系统的...
总之,数据库连接池是Java Web应用中必不可少的一部分,它通过有效的资源管理和复用,显著提升了数据库访问的效率和系统的稳定性。选择合适的连接池组件并进行适当的配置,是构建高效、可靠的数据库访问层的关键。
注意,虽然示例中的代码是在处理MySQL数据库(由文件名 `db_mysql.properties` 暗示),但核心概念同样适用于Oracle数据库,只需更改配置文件中的数据库连接信息即可。例如,URL格式会有所不同,Oracle的URL可能类似...
在Java编程中,`properties`文件通常用于存储配置信息,如数据库连接字符串、系统设置等。这个"读取properties文件工具类"是为了简化程序中对`.properties`文件的读取操作而设计的。通过这样的工具类,开发者可以...
一个优秀的JDBC工具类或帮助类是为了简化数据库操作,提高代码的可读性和复用性而设计的。在给定的“jdbc 工具类、帮助类”主题中,我们可以探讨以下几个重要的知识点: 1. **连接管理**:在JDBC中,建立和关闭...
标题中的“jdbc 连接数据库封装类,可返回map,或者vo(自用)”指的是一个自定义的Java类库,用于简化Java应用程序通过JDBC(Java Database Connectivity)与数据库的交互。这类库通常会提供方便的方法来执行SQL...