`
周禄康
  • 浏览: 161006 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

通过资源文件获取连接的JDBC数据库连接类

阅读更多

连接数据库的工具类:

 

package com.zlk.dao;

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

import com.zlk.util.EnvironmentConfig;

public class DBConnection {
	private static DBConnection conn = null; 
	private static String DB_PROPERTIES="/com/zlk/config/db.properties";
	private static EnvironmentConfig ec = EnvironmentConfig.getInstance();
	
	private static String DRIVER_CLASS_NAME = ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.driverClassName");
	private static String URL = ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.url");
	private static String USERNAME = ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.username");
	private static String PASSWORD= ec.getPropertyValue(DB_PROPERTIES, "db.jdbc.password");
	
	/**
	 * 私有构造函数,加载连接驱动
	 */
	private DBConnection(){
		try {
			Class.forName(DRIVER_CLASS_NAME);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("连接驱动未找到..............");
			e.printStackTrace();
		}
	}
	
	/**
	 * 实例化类对象
	 */
	public static DBConnection getInstance(){
		if(conn == null){
			return new DBConnection();
		}
		return conn;
	}
	
	/**
	 * 创建数据库连接
	 */
	public Connection getConnection() throws SQLException{
		return DriverManager.getConnection(URL,USERNAME,PASSWORD);
	}
	
	/**
	 * 释放资源
	 */
    public void release(Connection conn, PreparedStatement ps,ResultSet rs) {   
        if (rs != null)try {rs.close();} catch (SQLException e) {e.printStackTrace();}   
        if (ps != null) try {ps.close();} catch (SQLException e) {e.printStackTrace();}   
        if (conn!= null)try {conn.close();} catch (SQLException e) {e.printStackTrace();}   
    }   
  
	/**
	 * 释放资源
	 */
    public void release(Object obj) {   
        if (obj instanceof Connection) {   
            Connection conn = (Connection) obj;   
            if (conn != null)   
                try {   
                    conn.close();   
                } catch (SQLException e) {   
                    e.printStackTrace();   
                }   
        }   
        if (obj instanceof PreparedStatement) {   
            PreparedStatement ps = (PreparedStatement) obj;   
            if (ps != null)   
                try {   
                    ps.close();   
                } catch (SQLException e) {   
                    e.printStackTrace();   
                }   
        }   
        if (obj instanceof ResultSet) {   
            ResultSet rs = (ResultSet) obj;   
            if (rs != null)   
                try {   
                    rs.close();   
                } catch (SQLException e) {   
                    e.printStackTrace();   
                }   
        }   
    }   

}

 

读取资源文件的工具类:

package com.zlk.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Hashtable;
import java.util.Properties;

/**  
 * java 读取配置(属性)文件    
 * @author Billows.Van   
 * billows.van@gmail.com  
 */  
public class EnvironmentConfig {   
    static EnvironmentConfig ec;// 创建对象ec   
    private static Hashtable<String, Properties> register = new Hashtable<String, Properties>();// 静态对象初始化[在其它对象之前]   
  
    private EnvironmentConfig() {   
        super();   
    }   
  
    /**  
     * 取得EnvironmentConfig的一个实例  
     */  
    public static EnvironmentConfig getInstance() {   
        if (ec == null)   
            ec = new EnvironmentConfig();// 创建EnvironmentConfig对象   
        return ec;// 返回EnvironmentConfig对象   
    }   
  
    /**  
     * 读取配置文件  
     */  
    public Properties getProperties(String fileName) {// 传递配置文件路径   
        InputStream is = null;// 定义输入流is   
        Properties p = null;   
        try {   
            p = (Properties) register.get(fileName);// 将fileName存于一个HashTable   
            /**  
             * 如果为空就尝试输入进文件  
             */  
            if (p == null) {   
                try {   
                    is = new FileInputStream(fileName);// 创建输入流   
                } catch (Exception e) {   
                    if (fileName.startsWith("/")) 
                        // 用getResourceAsStream()方法用于定位并打开外部文件。   
                        is = EnvironmentConfig.class.getResourceAsStream(fileName);   
                    else  
                        is = EnvironmentConfig.class.getResourceAsStream("/"+fileName); 
                }   
                p = new Properties();   
                p.load(is);// 加载输入流   
                register.put(fileName, p);// 将其存放于HashTable缓存   
                is.close();// 关闭输入流   
            }   
        } catch (Exception e) {   
            e.printStackTrace(System.out);   
        }   
        return p;// 返回Properties对象   
    }   
  
    /**  
     * 此处插入方法描述。  
     */  
    public String getPropertyValue(String fileName, String strKey) {   
        Properties p = getProperties(fileName);   
        try {   
            return (String) p.getProperty(strKey);   
        } catch (Exception e) {   
            e.printStackTrace(System.out);   
        }   
        return null;   
    }  
    
    /**
     * 修改配置文件的值
     */
    public void setPropertyValue(String fileName,String strKey,String StrValue){
    	Properties p = getProperties(fileName);
    	OutputStream os = null;
    	try {
    		if(p!=null){
			  File file = new File(this.getClass().getResource("/").getPath().replace("%20", " "));//找到指定目录,其中路径中的“%20”用空格代替
			  file = new File(file.getPath()+fileName);//找到指定文件
			  
			  os = new FileOutputStream(file);
			  p.setProperty(strKey, StrValue);
			  p.store(os, "Last Modified");
    		}
		} catch (Exception e) {
			e.printStackTrace(System.out);   
		}finally{
			try {
				os.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
    }
    
    /**
     * 重载资源文件
     */
    public void reloadProterties(){
    	this.register.clear();
    }
}  

 

资源文件:

db.jdbc.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
db.jdbc.url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test
db.jdbc.username=sa
db.jdbc.password=sa

 

分享到:
评论

相关推荐

    常用jdbc数据库连接jar包,数据库连接池jar包

    本资源集合了常用的JDBC数据库连接jar包,以及一些知名的数据库连接池实现,如dbcp和c3p0,这对于开发人员来说是非常宝贵的资源。 首先,让我们了解一下JDBC。JDBC提供了一套标准的API,包括接口和类,使得开发者...

    JDBC通过配置文件连接数据库

    在实际开发中,我们经常需要通过配置文件来管理数据库连接信息,以实现灵活的数据库连接管理,避免硬编码,提高代码的可维护性和可扩展性。 1. **配置文件类型** 常见的配置文件格式有XML、properties或JSON等。...

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

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

    jdbc数据库连接池工程文件

    通过分析和学习这个“jdbc数据库连接池工程文件”的“demo”,开发者能够掌握如何在实际项目中集成和使用数据库连接池,提升应用的性能和稳定性。同时,理解连接池的工作原理有助于进行更高效的数据库操作和问题排查...

    jdbc连接各种数据库方式

    4. **数据库连接方法.mht** MHT文件是一种单个文件存储网页的格式,可能包含了如何使用JDBC连接数据库的网页教程,包括HTML代码示例和步骤解释。 5. **常用数据库JDBC连接写法.txt** 这个文本文件很可能包含了...

    JDBC连接数据库步骤及代码

    - **单例模式**:为了确保每次获取的都是同一个数据库连接对象,这里使用了单例模式来创建`ConnectionTest`类的对象。 - **加载驱动**:使用`Class.forName()`方法加载Oracle JDBC驱动。 - **建立连接**:通过`...

    jdbc数据库连接 模板代码

    以下是对给定文件中提到的JDBC数据库连接模板代码的知识点详细解析。 ### JDBC概念 JDBC是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成。通过JDBC,开发者可以将SQL语句发送到几乎任何...

    JDBC 连接到 PostgreSQL 数据库获取数据简单例子

    然后,需要获取PostgreSQL的JDBC驱动,这通常是一个名为`postgresql-jdbc.jar`的文件。将这个JAR文件添加到项目的类路径中,以便在Java程序中使用。 以下是一个简单的JDBC连接到PostgreSQL数据库并获取数据的步骤:...

    java使用jdbc连接oracle数据库

    通过JDBC,开发者可以编写与数据库无关的代码,因为JDBC提供了统一的API来执行SQL语句、管理数据库连接和处理结果集。 Oracle JDBC驱动分为多个版本,如ojdbc14、ojdbc6、ojdbc7等,每个版本对应不同的Java和Oracle...

    JDBC数据库操作通用类

    1. **增强安全性**:避免在代码中硬编码数据库连接信息,而是通过外部配置文件或环境变量传递这些敏感信息。 2. **资源管理**:确保所有打开的数据库连接、语句和结果集都在使用完毕后被正确关闭,避免资源泄漏。 3....

    JDBC通过文件读取方式加载连接数据库(以MySQL为例)

    本示例将详细讲解如何使用JDBC通过文件读取方式来加载数据库连接配置,以MySQL数据库为例。 首先,我们需要明白JDBC连接数据库的基本步骤: 1. 加载驱动:Java应用程序需要加载相应的数据库驱动,例如MySQL的JDBC...

    JDBC连接oracle数据库

    本示例展示了如何使用JDBC连接Oracle数据库,通过Apache Commons DBCP库实现数据库连接池来提高性能和资源管理。 首先,让我们了解关键类和方法: 1. `BaseDAO` 类:这是基础数据访问对象类,它封装了与数据库交互...

    jdbc连接数据库的jar

    "mysql-connector"部分表明这是与MySQL数据库交互的,而"bin.jar"通常表示这是一个可执行的JAR文件,其中包含用于数据库连接的二进制代码。 使用JDBC连接MySQL数据库的步骤大致如下: 1. **添加驱动依赖**:将`...

    JDBC数据库连接池实现原理

    通过以上步骤,你可以全面了解JDBC数据库连接池的实现原理,以及如何在实际项目中有效地使用和配置它。在实践中,结合Oracle数据库的特性和JDBC API,可以更好地优化数据库操作,提升系统的稳定性和效率。

    达梦数据库jdbc连接

    6. 关闭资源:使用完数据库连接后,记得关闭`ResultSet`、`Statement`和`Connection`,避免资源泄漏。 除了基本的JDBC操作,达梦数据库还提供了诸如事务管理、预编译语句、批处理等功能,这些都可以通过JDBC接口...

    MyEclipse实现JDBC数据库连接

    本篇文章将详细介绍如何在MyEclipse中使用JDBC(Java Database Connectivity)来建立数据库连接,以及如何执行基本的CRUD(创建、读取、更新、删除)操作。 首先,我们需要理解JDBC的概念。JDBC是Java平台的标准...

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

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

    jdbc-数据库连接和文件配置

    通过以上详细的介绍和示例代码,我们不仅了解了JDBC的基本原理和核心组件,还掌握了如何使用JDBC进行数据库连接和文件配置的具体步骤。这对于Java开发者来说,是进行数据库操作时不可或缺的知识点。

Global site tag (gtag.js) - Google Analytics