且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-06-11 22:00:46

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);
        }
    }
   
   
   
}