jdbc数据库连接管理封装工具类,不同使用属性文件配置数据库连接信息(1)

简介:

jdbc数据库连接管理封装工具类,不同使用属性文件配置数据库连接信息

 

package com.yanek.base.database;

import java.sql.CallableStatement;
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 org.apache.log4j.Logger;

 

 

public class ConnectionManager {

 static Logger logger = Logger.getLogger(ConnectionManager.class.getName());

 public static void main(String[] args) {
  
  try {
   System.out.println("conn=" + ConnectionManager.getConnection());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  

 }

 private static String poolName = null;

 private static boolean thirdConnectionPoolEnabled = false;

 private static Object providerLock = new Object();

 public ConnectionManager() {
 }

 /**
  * 从指定连接池获取数据库连接
  *
  * @param poolName
  *            连接池名称
  * @return
  * @throws SQLException
  */
 public static Connection getConnection(final String poolName)
   throws SQLException {
  try {
   return DriverManager.getConnection(poolName);
  } catch (Exception e) {
   logger.error(e);
   return null;
  }
 }

 public static Connection getConnection() throws SQLException {
  
  
  Connection conn = null;
  try {
   /*
    * //start 连接池 context = new InitialContext(); InitialContext
    * context = new InitialContext(); ds =
    * (DataSource)context.lookup("jdbc/OracleDS"); conn =
    * ds.getConnection(); //end 连接池
    */

   /*
    * //这是odbc方式连接方式 String driver="sun.jdbc.odbc.JdbcOdbcDriver";
    * String url="jdbc:odbc:newjchtdb"; String username="sa"; String
    * password="";
    *
    */

   // 这里通过配置文件实现数据库连接参数的设置
   String url = (String) ConfigUtil.getConfigInfo().get("url");
   // System.out.println("url100="+url);
   String driver = (String) ConfigUtil.getConfigInfo().get("driver");
   // System.out.println("driver="+driver);
   String username = (String) ConfigUtil.getConfigInfo().get("user");
   // System.out.println("user="+username);
   String password = (String) ConfigUtil.getConfigInfo().get(
     "password");
   // System.out.println("password="+password);

   Class.forName(driver);
   conn = DriverManager.getConnection(url, username, password);
   
   //conn = getConnectionFromPool();

  } catch (SQLException se) {
   // throw new ServletException(se);
  }

  catch (Exception e) {
   e.printStackTrace();
   conn = null;

  }
  return conn;  
  

 }

 public static void closeConnection(Statement stmt, Connection con) {
  try {
   if (stmt != null)
    stmt.close();
  } catch (Exception e) {
   logger.error(e);
  }
  closeConnection(con);
 }

 public static void closeConnection(PreparedStatement pstmt, Connection con) {
  try {
   if (pstmt != null)
    pstmt.close();
  } catch (Exception e) {
   logger.error(e);
  }
  closeConnection(con);
 }

 public static void closeConnection(CallableStatement cstmt, Connection con) {
  try {
   if (cstmt != null)
    cstmt.close();
  } catch (Exception e) {
   logger.error(e);
  }
  closeConnection(con);
 }

 public static void close(CallableStatement cstmt, Connection con) {
  try {
   if (cstmt != null)
    cstmt.close();
  } catch (Exception e) {
   logger.error(e);
  }
  closeConnection(con);
 }

 public static void closeConnection(ResultSet rs, PreparedStatement pstmt,
   Connection con) {
  closeResultSet(rs);
  closePreparedStatement(pstmt);
  closeConnection(con);
 }

 public static void closeConnection(ResultSet rs, PreparedStatement pstmt) {
  closeResultSet(rs);
  closePreparedStatement(pstmt);
 }

 public static void close(ResultSet rs, PreparedStatement pstmt) {
  closeResultSet(rs);
  closePreparedStatement(pstmt);
 }

 public static void close(ResultSet rs, PreparedStatement pstmt,
   Connection con) {
  closeResultSet(rs);
  closePreparedStatement(pstmt);
  closeConnection(con);
 }

 public static void closeConnection(Connection con) {
  try {
   if (con != null)
    con.close();
  } catch (Exception e) {
   logger.error(e);
  }
 }

 public static void close(Connection con) {
  try {
   if (con != null)
    con.close();
  } catch (Exception e) {
   logger.error(e);
  }
 }

 public static void closePreparedStatement(PreparedStatement pstmt) {
  try {
   if (pstmt != null)
    pstmt.close();
  } catch (Exception e) {
   logger.error(e);
  }
 }

 public static void close(PreparedStatement pstmt) {
  try {
   if (pstmt != null)
    pstmt.close();
  } catch (Exception e) {
   logger.error(e);
  }
 }

 public static void closeResultSet(ResultSet rs) {
  try {
   if (rs != null)
    rs.close();
  } catch (SQLException e) {
   logger.error(e);
  }
  rs = null;
 }

 public static void close(ResultSet rs) {
  try {
   if (rs != null)
    rs.close();
  } catch (SQLException e) {
   logger.error(e);
  }
  rs = null;
 }

 public static Connection getTransactionConnection() throws SQLException {
  Connection con = getConnection();
  con.setAutoCommit(false);
  return con;
 }
 
    /**
     * 通过连接池获取事务连接
     * @param poolName String
     * @return Connection
     * @throws SQLException
     */
    public static Connection getTransactionConnection(final String poolName)
    throws SQLException
    {
        Connection con = getConnection(poolName);
        con.setAutoCommit(false);
        return con;
    } 

    public static void closeTransactionConnection(PreparedStatement pstmt, Connection con, boolean abortTransaction)
    {
        try
        {
            if(pstmt != null)
                pstmt.close();
        }
        catch(Exception e)
        {
            logger.error(e);
        }
        closeTransactionConnection(con, abortTransaction);
    }
   
    public static void closeTransactionConnection(ResultSet rs,PreparedStatement pstmt, Connection con, boolean abortTransaction)
    {
     closeResultSet(rs);
     closePreparedStatement(pstmt);
        closeTransactionConnection(con, abortTransaction);
    }

    public static void closeTransactionConnection(Connection con, boolean abortTransaction)
    {
        if(con == null)
            return;

            try
            {
                if(abortTransaction)
                    con.rollback();
                else
                    con.commit();
            }
            catch(Exception e)
            {
                logger.error(e);
            }
        try
        {
            con.setAutoCommit(true);
        }
        catch(Exception e)
        {
            logger.error(e);
        }
        try
        {
            con.close();
        }
        catch(Exception e)
        {
            logger.error(e);
        }
    }
   
   
   
}

目录
相关文章
|
5月前
|
Java 关系型数据库 数据库连接
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
54 8
|
11天前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
74 13
|
16天前
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
3月前
|
SQL Java 数据库
Springboot+spring-boot-starter-data-jdbc实现数据库的操作
本文介绍了如何使用Spring Boot的spring-boot-starter-data-jdbc依赖来操作数据库,包括添加依赖、配置数据库信息和编写基于JdbcTemplate的数据访问代码。
326 2
|
3月前
|
SQL druid Java
JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO
JDBC和数据库连接池-两个工具类-JDBCUtilsByDruid和BasicDAO
137 0
|
5月前
|
SQL Java 数据库连接
JDBC之旅:从陌生到熟悉的Java数据库连接之路
JDBC之旅:从陌生到熟悉的Java数据库连接之路
39 9
|
5月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
54 1
|
5月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
147 0
|
3月前
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
631 1
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
133 0