`
Java_Fan
  • 浏览: 81740 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

JDBC获取连接、关闭连接的简单工具类2

 
阅读更多
package com.adam.dev.utils;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * @author adam.胡升阳
 * 
 */
public class JdbcByPropertiesUtil {
    private static String filePath = "jdbc.properties"; 
    private static JdbcByPropertiesUtil instance = null;
    
    public JdbcByPropertiesUtil() {
		super();
	}

	/**
     * 单例方式创建对象
     * @return
     */
    public static JdbcByPropertiesUtil getInstance() {
        if (instance == null) {
            synchronized (JdbcByPropertiesUtil.class) {
                if (instance == null) {
                    instance = new JdbcByPropertiesUtil();
                }
            }
        }
        return instance;
    }
       
    /**
     * 读取properties文件中 数据库连接信息
     * @param filePath
     * add 2012-4-17
     */
    public static Properties readPropertiesFile(){
    	String realFilePath = Thread.currentThread().getContextClassLoader().getResource("").getPath()+filePath; 
        Properties pros = new Properties();  
        try {  
            InputStream is = new BufferedInputStream(new FileInputStream(realFilePath));  
            pros.load(is); 
        } catch (Exception e) {  
            e.printStackTrace();
        }
        return pros;
    } 
    
    /**
     * 注册驱动
     * 静态代码块 用于启动web服务器时加载驱动
     */
    static{
        Properties pros = readPropertiesFile();
        String className = (String) pros.get("className");
        try {
            Class.forName(className).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
    
	/**
	 * 获取数据库连接
     * modify 2012-4-17
	 * @param con
	 * @return
	 */
	public Connection getConnection(){
        Properties pros = readPropertiesFile();
        String url = (String) pros.get("url");
        String user = (String) pros.get("user");
        String password = (String) pros.get("password");
        Connection conn = null;
		try {
			conn = DriverManager.getConnection(url,user,password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
       
    /**
     *  依次关闭ResultSet、Statement、Connection
     *  若对象不存在则创建一个空对象
     * @param rs
     * @param st
     * @param pst
     * @param conn
     */
    public void close(ResultSet rs,Statement st,Connection conn){
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally{
                if(st != null){
                    try {
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    } finally{
                        if(conn != null){
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
        }
    }


    /**
     * 新增、修改、删除、查询记录(也可以改为有结果集ResultSet返回的查询方法)
     * @param sql
     * @throws  
     */
    public void execute(String sql){
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            pst = conn.prepareStatement(sql);
            pst.execute();
            conn.commit();
        } catch (Exception e) {
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally{
            //Statement st = null;
            ResultSet rs = null;
            jbpu.close(rs, pst, conn); 
        }
    }
 
    /**
     * 新增、修改、删除记录
     * @param sql
     * @throws  
     */
    public void executeUpdate(String sql) {
        JdbcByPropertiesUtil jbpu = getInstance();
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            conn = jbpu.getConnection();
            conn.setAutoCommit(false);
            pst = conn.prepareStatement(sql);
            pst.executeUpdate();
            conn.commit();
        } catch (Exception e) {
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally{
            //Statement st = null;
            ResultSet rs = null;
            jbpu.close(rs, pst, conn); 
        }
    }
    
    
}

分享到:
评论

相关推荐

    jdbc连接mysql工具类

    下面将详细介绍如何使用Eclipse作为开发环境,通过编写一个JDBC工具类来连接MySQL数据库,并实现基本的增删改查功能。 首先,我们需要引入MySQL的JDBC驱动,也就是`mysql-connector.jar`。这个库文件包含了连接...

    jdbc连接oracle工具类

    本篇文章将详细讲解如何创建一个JDBC连接Oracle的工具类,以及在实际应用中需要注意的事项。 首先,我们需要了解JDBC的基本概念。JDBC是Java与数据库交互的一组接口和类,它允许Java程序通过SQL语句来操作数据库。...

    JDBC数据库连接工具类

    一个简单的JDBC数据库连接工具类可能包含以下功能: ```java public class JdbcUtils { private static final String URL = "jdbc:mysql://localhost:3306/test"; private static final String USER = "root"; ...

    JDBC的工具类

    在实际开发中,为了提高代码的可重用性和减少重复性工作,我们通常会创建一个JDBC工具类,将数据库连接、关闭资源等操作封装起来。以下是一个关于JDBC工具类的详细解释。 1. **JDBC工具类的作用** - 提高代码的可...

    Oracle jdbc 单例 工具类

    - 在Java代码中,通过工具类的静态方法获取连接,执行SQL操作,最后记得关闭连接。 ```java DB db = DB.getInstance(); // 获取单例 Connection conn = db.getConnection(); // 获取连接 try { Statement stmt = ...

    jdbc连接工具类 单例连接模式,进度1

    在本项目中,“jdbc连接工具类 单例连接模式,进度1”指的是创建了一个使用单例设计模式的JDBC连接工具类,以优化数据库连接的管理和复用,提高程序性能。下面我们将深入探讨这两个关键概念。 首先,让我们了解一下...

    JDBC简单地工具类.rar

    本资源"JDBC简单地工具类.rar"包含了一些基础的JDBC代码示例,适合初学者用来了解和学习JDBC的基本用法。 1. **JDBC驱动注册与连接** 在使用JDBC时,首先需要加载并注册对应的数据库驱动,通常通过`Class.forName...

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

    数据库连接池在初始化时会创建一定数量的数据库连接并保存起来,当应用程序需要连接时,可以从池中获取一个已存在的连接,而不是每次都去新建,用完后也不立即关闭,而是归还给连接池。这样可以显著减少建立和释放...

    JDBC工具类

    以下是一个简单的JDBC工具类的概述,以`jdbcmode.java`为例: 1. **数据库连接** - 使用`java.sql.DriverManager`类加载数据库驱动并建立连接。在`getConnection`方法中,通过`Class.forName`加载指定的数据库驱动...

    JDBC连接工具mysql与oracle

    2. **建立连接**:使用`java.sql.DriverManager`类的`getConnection()`方法建立与MySQL的连接。提供数据库URL、用户名和密码: ```java String url = "jdbc:mysql://localhost:3306/mydatabase"; String username...

    jdbc连接池c3p0工具包

    **jdbc连接池c3p0工具包** 在Java开发中,数据库操作是常见的任务,而JDBC(Java Database Connectivity)是Java与数据库交互的标准接口。然而,直接使用JDBC进行数据库连接可能会导致性能问题,因为每次连接和断开...

    jdbc工具类

    在本篇文章中,我们将深入探讨JDBC工具类的核心概念、主要功能以及如何使用它来连接和操作MySQL数据库。 1. **JDBC基础** JDBC提供了一组标准接口和类,使得Java开发者能够通过统一的方式与各种关系型数据库进行...

    jdbc 工具类、帮助类

    工具类通常会提供一个静态方法来获取数据库连接,通过连接池实现连接的复用。连接池如C3P0、HikariCP或Apache DBCP等,它们可以预先配置一定数量的连接,避免频繁创建和销毁连接,从而提高性能。 2. **预编译SQL...

    一种简单JDBC数据库连接池的实现

    应用程序在需要时可以从连接池中获取连接,使用完毕后归还,而不是每次操作都建立新的连接。这降低了频繁创建和关闭连接的开销,提高了系统效率。 在提供的资源中,`DatabasePool.conf`文件是配置数据库连接池的...

    java使用jdbc连接数据库工具类和jdbc连接mysql数据示例

    本文将详细解释如何使用JDBC连接MySQL数据库,以及如何创建一个工具类来简化数据库连接的管理。 首先,我们需要引入MySQL的JDBC驱动,这通常是一个jar文件,如`mysql-connector-java-5.1.20-bin.jar`。这个驱动包...

    jdbc连接oracle数据库

    在使用JDBC连接Oracle数据库时,首先需要在项目的类路径中包含对应的ojdbc驱动jar文件。这里我们有ojdbc6_g.jar、ojdbc5_g.jar、ojdbc6.jar和ojdbc5.jar四个文件。其中,“_g”后缀通常表示包含了调试信息,对于开发...

    jdbc经典工具类

    1. **JDBC工具类**:JDBC工具类通常封装了数据库连接、预编译SQL语句、执行SQL、关闭资源等常见操作,以减少重复代码,提升开发效率。`connJdbcUtil`可能是一个实现了这些功能的Java类。 2. **数据库连接配置**:...

    javaweb jdbc工具类.zip

    因此,JDBC工具类通常会包含数据库连接池(如C3P0、HikariCP或Apache DBCP)的配置和管理,以实现连接的复用,提高性能并减少系统开销。 2. **自动处理事务**:工具类可以封装开始事务、提交事务和回滚事务的逻辑,...

    JDBC连接sqlserver与mysql

    2. **添加驱动到项目**:将下载的JDBC驱动jar文件(如mssql-jdbc-<version>.jar)添加到Java项目的类路径中。 3. **建立连接**:使用`java.sql.DriverManager`类的`getConnection()`方法建立连接,需要提供服务器...

    jdbc连接池dbcp工具包

    2. **PoolableConnection**: 这是DBCP中管理的数据库连接对象,它包装了实际的JDBC Connection,增加了连接池管理的功能,如自动关闭、回池等。 3. **PoolManager**: 负责连接池的初始化、扩展以及清理工作,管理...

Global site tag (gtag.js) - Google Analytics