JDBC 连接池(类 对结果集进行封装)

JDBC 连接池(类 对结果集进行封装)

package dao_sql;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;


public class WebBean
{
 protected Connection conn = null;

 protected void free(Statement stmt)
 {
  try {
   if (stmt != null)
   {
    stmt.close();
   }
  }
  catch (SQLException e)
  {
   println(e);
  }
  freeConn();
 }

 /**
  * 此处插入方法说明。 创建日期:(2004-3-16 17:01:55)
  */
 protected void freeConn()
 {
  try {
   if (conn != null)
   {
    conn.close();
   }
  }
  catch (SQLException e)
  {
   
   println(e);
  }
 }

 private String gb2u(String s)
 {
  try {
   String sUnicode = new String(s.getBytes("8859_1"), "gb2312");
   s = "";
   for (int i = 0; i < sUnicode.length(); i++)
   {
    if (sUnicode.charAt(i) < 255)
    {
     s = s + sUnicode.charAt(i);
    }
    else
    {
    String sHex = Integer.toHexString(sUnicode.charAt(i))
      .toUpperCase();
    if (sHex.length() < 4)
     sHex = "0000".substring(0, 4 - sHex.length()) + sHex;
    s += "&#x" + sHex + ";";
    }
   }
  } catch (Exception exception) {
  }
  return s;
 }
//连接数据库 这个很重要 这个方里 它是重要地方之一 这里需要你传递JNDI的名字
 protected boolean getConnection() throws Exception
 {
  return getConnection("bbs");
 }

 protected HashMap getInfo(ResultSet rs) throws SQLException
 {  
  return getInfo(rs, null);
 }
 protected HashMap getInfo(ResultSet rs, HashMap hm) throws SQLException
 {
  ResultSetMetaData rsmd = rs.getMetaData();
  if (rs.next())
  {
   
   if (hm == null)
   {
    hm = new HashMap();
   }
   for (int i = 1; i <= rsmd.getColumnCount(); i++)
   {
    String fieldname = rsmd.getColumnName(i);

    String value = rs.getString(fieldname);
    fieldname = fieldname.toLowerCase();

    hm.put(fieldname, encoding(fieldname, value));
   }
  }
  rs.close();
  return hm;
 }
 //得到结果集 重要之二
 protected HashMap getRS(ResultSet rs) throws SQLException
 {

  HashMap hm = new HashMap();
  int count = 0;
  String[] fieldsname = null ; //新加的 表示是数据库的字段名字
  ResultSetMetaData rsmd = rs.getMetaData();
  fieldsname = new String[rsmd.getColumnCount()];
  while (rs.next())
  {
   //声明一个HashMap 对象
   HashMap rec = new HashMap();

   for (int i = 1; i <= rsmd.getColumnCount(); i++) {
    String fieldname = rsmd.getColumnName(i);
   
    String value = rs.getString(fieldname);
    
    fieldname = fieldname.toLowerCase();

    rec.put(fieldname, encoding(fieldname, value));
    
   }
   //把HashMap 又放在了一个HashMap 里 这里的建值0,1,2。。。。存放了rec
   hm.put("" + count, rec);
   count++;
  }
  
  
  //把数据库的字段名字放到HashMap表里
  for (int i = 1; i <= rsmd.getColumnCount(); i++)
  {
    fieldsname[i-1] = rsmd.getColumnName(i);
  }
     hm.put("fields",fieldsname);
    
    
    
  rs.close();
   //这里的count是记录一共有多少个HashMap 用固定的count这个建值来表示
  hm.put("count", new Integer(count));
  return hm;
 }
//重要之三  根据结果集得到 数据库里有多少条记录
 protected  int getCount(ResultSet rs) throws SQLException
 {
  int count = 0 ;
  while (rs.next())
  {
   count = rs.getInt(1) ;
  }
  rs.close() ;
  return count ;
 }

 /**
  * 此处插入方法说明。 创建日期:(2004-3-15 15:28:32)
  *
  * @param obj
  *            java.lang.Object
  */
 protected void println(Exception ex)
 {
  ex.printStackTrace(System.out);
  System.out.println(ex);
 }

 private String encoding(String fieldname, String value)
 {
  if ((fieldname.indexOf("name") != -1 || fieldname.indexOf("note") != -1 || fieldname.indexOf("title") != -1)&& !fieldname.equals("servicename")
    && !fieldname.equals("businame")
    && !fieldname.equals("filename")
    && !fieldname.equals("mobname"))
  {
   return value;
  }
  return value;
 }

 protected boolean getConnection(String dbname) throws Exception
 {
  if (conn == null || conn.isClosed())
  {
   conn = Dao_Sql.getConnection(dbname);
  }
  if (conn == null || conn.isClosed())
  {
   return false;
  }
  return true;
 }
}

你可能感兴趣的:(JDBC 连接池(类 对结果集进行封装))