⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 connpool.java

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 JAVA
字号:
package cn.js.fan.db;

import java.sql.*;
import javax.naming.Context;
import javax.sql.DataSource;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class ConnPool {
  // public: connection parameters
  boolean debug = true;
  java.sql.Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  ResultSetMetaData resultsMeta = null;
  int rows = 0;
  int columns = 0;
  String PoolName = null;
  boolean inited = false;

  // public: constructor to load driver and connect db
  public ConnPool() {

  }

  public void init() {
    try {
      Context initCtx = new InitialContext();
      Context envCtx = (Context) initCtx.lookup("java:comp/env");
      DataSource ds = (DataSource) envCtx.lookup("jdbc/"+PoolName);
      con = ds.getConnection();
      stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                 ResultSet.CONCUR_READ_ONLY);
    }
    // display corresponding error message when onload error occur
    catch (NamingException e) {
      System.out.println("Connection pool fail. Message is:");
      System.out.println(e.getMessage());
    }
    catch (SQLException e) {
      System.out.print("SQL Exception occur. Message is:");
      System.out.print(e.getMessage());
    }
    inited = true;
  }

  public ConnPool(String pn) {
    try {
      Context initCtx = new InitialContext();
      Context envCtx = (Context) initCtx.lookup("java:comp/env");
      DataSource ds = (DataSource) envCtx.lookup("jdbc/"+pn);
      con = ds.getConnection();
      stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                 ResultSet.CONCUR_READ_ONLY);
    }
    // display corresponding error message when onload error occur
    catch (NamingException e) {
      System.out.println("Connection pool fail. Message is:");
      System.out.println(e.getMessage());
    }
    catch (SQLException e) {
      System.out.print("SQL Exception occur. Message is:");
      System.out.print(e.getMessage());
    }
    PoolName = pn;
    inited = true;
  }

  public void setPOOLNAME(String pn) {
    if (!inited)
    {
      this.PoolName = pn;
      init();
    }
  }

  public String getPOOLNAME() {
    return this.PoolName;
  }

  // perform a query with records returned
  public ResultSet executeQuery(String sql) throws SQLException {
    if (con == null)
      return null;
    ResultSet rs = null;
    try {
      rs = stmt.executeQuery(sql);
    }
    catch (SQLException e) {
      System.out.print("Query:" + sql+"---"+ e.getMessage());
      throw e;
    }
    this.rs = rs;
    return rs;
  }

  // perform a query without records returned
  public int executeUpdate(String sql) throws SQLException {
    int rowcount = 0;
    if (con == null)
      return 0;
    try {
      rowcount = stmt.executeUpdate(sql);
    }
    catch (SQLException e) {
      if (debug) {
        System.out.println("Update:" + e.getMessage());
        System.out.println("sql:" + sql);
      }
      throw e;
    }
    finally {
      return rowcount;
    }
  }

  // return the num of columns
  public int getColumns() {
    int columns = 0;
    try {
      this.resultsMeta = this.rs.getMetaData();
      columns = this.resultsMeta.getColumnCount();
    }
    catch (SQLException e) {}
    return columns;
  }

  // return the num of rows
  public int getRows() {
    rows = 0;
    try {
      //获取记录总数
      rs.last();
      rows = rs.getRow();
      rs.beforeFirst();
    }
    catch (SQLException e) {
      System.out.println("getRows error:" + e.getMessage());
    }
    return this.rows;
  }

  protected void finalize() throws Throwable {
    super.finalize();
    try {
      if (stmt != null) {
        stmt.close();
        stmt = null;
      }
    }
    catch (SQLException e) {
      System.out.println("Conn finalize: "+e.getMessage());
    }
    try {
      if (con != null && !con.isClosed())
      {
        con.close();
        con = null;//防止因为多线程,导致二次关闭,使得其他线程出错
      }
    }
    catch (SQLException e) {
      System.out.println("Conn finalize: "+e.getMessage());
    }
  }

  public void close() { // throws Throwable
    try {
      finalize();
    }
    catch (java.lang.Throwable e) {
      System.out.println("conn.close error:" + e.getMessage());
    }
  }

  public void beginTrans() throws SQLException {
    try {
      //boolean autoCommit=con.getAutoCommit();
      con.setAutoCommit(false);
    }
    catch (SQLException ex) {
      ex.printStackTrace();
      System.out.print("beginTrans Errors");
      throw ex;
    }
  }

  public void commit() throws SQLException {
    try {
      con.commit();
      con.setAutoCommit(true);
    }
    catch (SQLException ex) {
      ex.printStackTrace();
      System.out.print("Commit Errors");
      throw ex;
    }
  }

  public void rollback() {
    try {
      con.rollback();
      con.setAutoCommit(true);
    }
    catch (SQLException ex) {
      ex.printStackTrace();
      System.out.print("Rollback Errors");
      //throw ex;
    }
  }

  public boolean getAutoCommit() throws SQLException {
    boolean result = false;
    try {
      result = con.getAutoCommit();
    }
    catch (SQLException ex) {
      ex.printStackTrace();
      System.out.println("getAutoCommit fail" + ex.getMessage());
      throw ex;
    }
    return result;
  }

  public int getTransactionIsolation() throws SQLException {
    int re = 0;
    try {
      re = con.getTransactionIsolation();
    }
    catch (SQLException e) {
      e.printStackTrace();
      System.out.println("getTransactionIsolation fail" + e.getMessage());
    }
    return re;
  }

  public void setFetchSize(int s) {
    try {
      stmt.setFetchSize(s);
    }
    catch (SQLException e) {
      System.out.println("setFetchSize fail:" + e.getMessage());
    }

  }

  /**
    * Sets the max number of rows that should be returned from executing a
    * statement. The operation is automatically bypassed if Jive knows that the
    * the JDBC driver or database doesn't support it.
    *
    * @param stmt the Statement to set the max number of rows for.
    * @param maxRows the max number of rows to return.
    */
   public void setMaxRows(int maxRows) throws
       SQLException {
     try {
       stmt.setMaxRows(maxRows);
     }
     catch (Throwable t) {
       // Ignore. Exception may happen if the driver doesn't support
       // this operation and we didn't set meta-data correctly.
       // However, it is a good idea to update the meta-data so that
       // we don't have to incur the cost of catching an exception
       // each time.
       System.out.println("conn.setMaxRows:"+t.getMessage());
     }
   }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -