分享

DatabaseDaoImpl操作

 Blex 2011-05-24

package cn.jcenterhome.dao;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.StringCharacterIterator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.util.SessionFactory;
import cn.jcenterhome.vo.FieldVO;
import cn.jcenterhome.vo.TableColumnsVO;
import cn.jcenterhome.vo.TableFieldVO;
import cn.jcenterhome.vo.TableStatusVO;

public class DataBaseDaoImpl implements DataBaseDao {
 
 public List<Map<String, Object>> executeQuery(String sql) {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
  
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   
   ResultSetMetaData rsmd = rs.getMetaData();
   int columnCount = rsmd.getColumnCount();
   List<FieldVO> fields = new ArrayList<FieldVO>(columnCount);
   
   FieldVO field = null;
   for (int i = 1; i <= columnCount; i++) {
    field = new FieldVO();
    field.setName(rsmd.getColumnLabel(i));
    field.setInt(rsmd.getColumnTypeName(i).contains("INT"));
    fields.add(field);
   }
   
   rsmd = null;
   Map<String, Object> row = null;
   while (rs.next()) {
    row = new HashMap<String, Object>(columnCount);
    for (FieldVO obj : fields) {
     if (obj.isInt()) {
      row.put(obj.getName(), rs.getInt(obj.getName()));
     } else {
      row.put(obj.getName(), rs.getString(obj.getName()));
     }
    }
    rows.add(row);
   }
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   e.printStackTrace();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return rows;
 }
 
 public List<Map<String, Object>> executeQueryByBlock(String sql) {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   ResultSetMetaData rsmd = rs.getMetaData();
   int columnCount = rsmd.getColumnCount();
   List<FieldVO> fields = new ArrayList<FieldVO>(columnCount);
   FieldVO field = null;
   for (int i = 1; i <= columnCount; i++) {
    field = new FieldVO();
    field.setName(rsmd.getColumnLabel(i));
    field.setInt(rsmd.getColumnTypeName(i).contains("INT"));
    fields.add(field);
   }
   rsmd = null;
   Map<String, Object> row = null;
   while (rs.next()) {
    row = new HashMap<String, Object>(columnCount);
    List<String> columnNames = new ArrayList<String>();
    for (FieldVO obj : fields) {
     if (obj.isInt()) {
      row.put(obj.getName(), rs.getInt(obj.getName()));
     } else {
      row.put(obj.getName(), rs.getString(obj.getName()));
     }
     columnNames.add(obj.getName());
    }
    row.put("columnname", columnNames);
    rows.add(row);
   }
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   e.printStackTrace();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return rows;
 }
 
 public List<String> executeQuery(String sql, int columnIndex) {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  List<String> rows = new ArrayList<String>();
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   while (rs.next()) {
    rows.add(rs.getString(columnIndex));
   }
   tran.commit();
  } catch (SQLException e) {
   e.printStackTrace();
   tran.rollback();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return rows;
 }
 
 public int executeUpdate(String sql) {
  Connection conn = null;
  Statement stmt = null;
  int rows = 0;
  Transaction tran = null;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   stmt = conn.createStatement();
   stmt.setEscapeProcessing(false);
   rows = stmt.executeUpdate(sql);
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   e.printStackTrace();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (stmt != null) {
     stmt.close();
     stmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return rows;
 }
 
 public Map<String, Object> execute(String sql) {
  Session session = null;
  Connection conn = null;
  Transaction tran = null;
  Map<String, Object> infos = new HashMap<String, Object>();
  Statement pstmt = null;
  try {
   session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.createStatement();
   pstmt.setEscapeProcessing(false);
   boolean result = pstmt.execute(sql);
   int num = 0;
   if (result) {
    ResultSet rs = pstmt.executeQuery(sql);
    if (rs.last()) {
     num = rs.getRow();
    }
   } else {
    num = pstmt.getUpdateCount();
   }
   infos.put("sucess", num);
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   infos.put("error", e.getMessage());
   infos.put("errorCode", e.getErrorCode());
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    infos.put("error", e.getMessage());
    infos.put("errorCode", e.getErrorCode());
   }
  }
  return infos;
 }
 
 public int insert(String sql) {
  int id = 0;
  Connection conn = null;
  Statement stmt = null;
  Transaction tran = null;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   stmt = conn.createStatement();
   stmt.setEscapeProcessing(false);
   int rows = stmt.executeUpdate(sql);
   if (rows > 0) {
    ResultSet rs = stmt.executeQuery("SELECT last_insert_id()");
    if (rs.next()) {
     id = rs.getInt(1);
    }
    rs.close();
    rs = null;
   }
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   e.printStackTrace();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (stmt != null) {
     stmt.close();
     stmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return id;
 }
 
 public String findFirst(String sql, int columnIndex) {
  String result = null;
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   if (rs.next()) {
    result = rs.getString(columnIndex);
   }
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   e.printStackTrace();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return result;
 }
 
 public int findRows(String sql) {
  int line = 0;
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   if (rs.next()) {
    line = rs.getInt(1);
   }
   tran.commit();
  } catch (SQLException e) {
   tran.rollback();
   e.printStackTrace();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return line;
 }
 
 public long findTableSize(String sql) {
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  long dataSize = 0;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   while (rs.next()) {
    dataSize += rs.getLong("Data_length");
    dataSize += rs.getLong("Index_length");
   }
   tran.commit();
  } catch (SQLException e) {
   e.printStackTrace();
   if (tran != null) {
    tran.rollback();
   }
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return dataSize;
 }
 
 public List<TableFieldVO> findTableFields(String tableName) {
  List<TableFieldVO> fieldVOs = new ArrayList<TableFieldVO>();
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement("SHOW FIELDS FROM " + tableName);
   rs = pstmt.executeQuery();
   TableFieldVO fieldVO = null;
   while (rs.next()) {
    fieldVO = new TableFieldVO();
    fieldVO.setField(rs.getString("Field"));
    fieldVO.setType(rs.getString("Type"));
    fieldVO.setAllowNull(rs.getString("Null"));
    fieldVO.setKey(rs.getString("Key"));
    fieldVO.setDefaultValue(rs.getString("Default"));
    fieldVO.setExtra(rs.getString("Extra"));
    fieldVOs.add(fieldVO);
   }
   tran.commit();
  } catch (SQLException e) {
   e.printStackTrace();
   tran.rollback();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return fieldVOs;
 }
 
 public List<TableColumnsVO> findTableColumns(String tableName) {
  List<TableColumnsVO> fullColumnsVOs = new ArrayList<TableColumnsVO>();
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement("SHOW FULL COLUMNS FROM " + tableName);
   rs = pstmt.executeQuery();
   TableColumnsVO fullColumnsVO = null;
   while (rs.next()) {
    fullColumnsVO = new TableColumnsVO();
    fullColumnsVO.setField(rs.getString("Field"));
    fullColumnsVO.setType(rs.getString("Type"));
    fullColumnsVO.setCollation(rs.getString("Collation"));
    fullColumnsVO.setAllowNull(rs.getString("Null"));
    fullColumnsVO.setKey(rs.getString("Key"));
    fullColumnsVO.setDefaultValue(rs.getString("Default"));
    fullColumnsVO.setExtra(rs.getString("Extra"));
    fullColumnsVO.setPrivileges(rs.getString("Privileges"));
    fullColumnsVO.setComment(rs.getString("Comment"));
    fullColumnsVOs.add(fullColumnsVO);
   }
   tran.commit();
  } catch (SQLException e) {
   e.printStackTrace();
   tran.rollback();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return fullColumnsVOs;
 }
 
 public List<TableStatusVO> findTableStatus(String sql) {
  List<TableStatusVO> tableStatusVOs = new ArrayList<TableStatusVO>();
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction tran = null;
  try {
   Session session = SessionFactory.getSession();
   tran = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   TableStatusVO tableStatusVO = null;
   while (rs.next()) {
    tableStatusVO = new TableStatusVO();
    tableStatusVO.setName(rs.getString("Name"));
    tableStatusVO.setEngine(rs.getString("Engine"));
    tableStatusVO.setRows(rs.getLong("Rows"));
    tableStatusVO.setData_length(rs.getLong("Data_length"));
    tableStatusVO.setIndex_length(rs.getLong("Index_length"));
    tableStatusVO.setData_free(rs.getLong("Data_free"));
    tableStatusVO.setAuto_increment(rs.getString("Auto_increment"));
    tableStatusVO.setCollation(rs.getString("Collation"));
    tableStatusVOs.add(tableStatusVO);
   }
   tran.commit();
  } catch (SQLException e) {
   e.printStackTrace();
   tran.rollback();
  } finally {
   try {
    if (tran != null) {
     tran = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return tableStatusVOs;
 }
 
 public Map sqldumptable(List<String> excepttables, String table, int startfrom, long currsize,
   long sizelimit, boolean complete, String version, int extendins, String sqlcompat,
   String dumpcharset, String sqlcharset, boolean usehex) {
  int offset = 300;
  Map map = new HashMap();
  StringBuffer tabledump = new StringBuffer();
  if (table.contains("adminsessions")) {
   map.put("tabledump", tabledump);
   return map;
  }
  List<TableFieldVO> fieldStatusVOs = findTableFieldStatus(table);
  if (fieldStatusVOs == null || fieldStatusVOs.size() <= 0) {
   map.put("tabledump", tabledump);
   return map;
  }
  if (startfrom == 0) {
   String createtable = findFirst("SHOW CREATE TABLE " + table, 2).replaceAll("`", "");
   if (createtable != null && createtable.length() > 0) {
    tabledump.append("DROP TABLE IF EXISTS " + table + ";\n");
   } else {
    map.put("tabledump", tabledump);
    return map;
   }
   tabledump.append(table.indexOf(".") != -1 ? createtable : createtable.replaceFirst(
     "CREATE TABLE " + table, "CREATE TABLE " + table.substring(table.indexOf(".") + 1)));
   TableStatusVO tableStatusVO = this.findTableStatus("SHOW TABLE STATUS LIKE '" + table + "';")
     .get(0);
   if (sqlcompat.equals("MYSQL41") && version.compareTo("4.1") < 0) {
    tabledump.replace(0, tabledump.length(), tabledump.toString().replaceFirst("TYPE\\=(.+)",
      "ENGINE=" + tableStatusVO.getEngine() + " DEFAULT CHARSET=" + dumpcharset));
   } else if (sqlcompat.equals("MYSQL40") && version.compareTo("4.1") >= 0
     && version.compareTo("5.1") < 0) {
    tabledump.replace(0, tabledump.length(), tabledump.toString().replaceFirst("ENGINE\\=(.+)",
      "TYPE=" + tableStatusVO.getEngine()));
   } else if (version.compareTo("4.1") > 0 && sqlcharset.length() > 0) {
    tabledump.replace(0, tabledump.length(), tabledump.toString().replaceFirst(
      "(DEFAULT)*\\s*CHARSET=.+", "DEFAULT CHARSET=" + sqlcharset));
   }
   tabledump.append((tableStatusVO.getAuto_increment() != null
     && !"".equals(tableStatusVO.getAuto_increment()) ? " AUTO_INCREMENT="
     + tableStatusVO.getAuto_increment() : "")
     + ";\n\n");
   if (sqlcompat.equals("MYSQL40") && version.compareTo("4.1") >= 0 && version.compareTo("5.1") < 0) {
    if (tableStatusVO.getAuto_increment() != null
      && !"".equals(tableStatusVO.getAuto_increment())) {
     tabledump.insert(tabledump.indexOf(","), " auto_increment");
    }
    if ("MEMORY".equals(tableStatusVO.getEngine())) {
     int index = tabledump.indexOf("TYPE=MEMORY");
     if (index > 0) {
      tabledump.replace(index, "TYPE=MEMORY".length() + index, "TYPE=HEAP");
     }
    }
   }
  }
  if (!excepttables.contains(table)) {
   int tabledumped = 0;
   int numrows = offset;
   TableFieldVO firstfield = fieldStatusVOs.get(0);
   if (extendins == 0) {
    while ((currsize + tabledump.length()) < sizelimit && numrows == offset && complete) {
     String selectsql = null;
     if ("auto_increment".equals(firstfield.getExtra())) {
      selectsql = "SELECT * FROM " + table + " WHERE " + firstfield.getField() + " > "
        + startfrom + " LIMIT " + offset + ";";
     } else {
      selectsql = "SELECT * FROM " + table + " LIMIT " + startfrom + ", " + offset + ";";
     }
     tabledumped = 1;
     List<Map<String, Object>> rows = this.executeQuery(selectsql);
     if (rows != null) {
      numrows = rows.size();
      StringBuffer t = null;
      for (Map<String, Object> row : rows) {
       t = new StringBuffer();
       for (TableFieldVO fieldStatusVO : fieldStatusVOs) {
        String type = fieldStatusVO.getType();
        String value = row.get(fieldStatusVO.getField()).toString();
        if (value == null) {
         if ("date".equals(type)) {
          value = "0000-00-00";
         } else {
          value = "";
         }
        }
        t.append(","
          + (usehex && !value.equals("")
            && (type.contains("char") || type.contains("text")) ? "0x"
            + bin2hex(value, JavaCenterHome.JCH_CHARSET) : "\'"
            + mysqlEscapeString(value) + "\'"));
       }
       if ((t.length() + currsize + tabledump.length()) < sizelimit) {
        if ("auto_increment".equals(firstfield.getExtra())) {
         startfrom = Integer.valueOf(row.get(firstfield.getField()).toString());
        } else {
         startfrom++;
        }
        if (t.length() > 0) {
         t.deleteCharAt(0);
         tabledump.append("INSERT INTO " + table + " VALUES (" + t + ");\n");
        }
       } else {
        complete = false;
        break;
       }
      }
     } else {
      break;
     }
    }
   } else {
    while (currsize + tabledump.length() < sizelimit && numrows == offset && complete) {
     String selectsql = null;
     if ("auto_increment".equals(firstfield.getExtra())) {
      selectsql = "SELECT * FROM " + table + " WHERE " + firstfield.getField() + " > "
        + startfrom + " LIMIT " + offset + ";";
     } else {
      selectsql = "SELECT * FROM " + table + " LIMIT " + startfrom + ", " + offset + ";";
     }
     tabledumped = 1;
     List<Map<String, Object>> rows = this.executeQuery(selectsql);
     if (rows != null) {
      numrows = rows.size();
      StringBuffer t1 = new StringBuffer();
      for (Map<String, Object> row : rows) {
       StringBuffer t2 = new StringBuffer();
       for (TableFieldVO fieldStatusVO : fieldStatusVOs) {
        String type = fieldStatusVO.getType();
        String value = row.get(fieldStatusVO.getField()).toString();
        if (value == null) {
         if ("date".equals(type)) {
          value = "0000-00-00";
         } else {
          value = "";
         }
        }
        t2.append(","
          + (usehex && !value.equals("")
            && (type.contains("char") || type.contains("text")) ? "0x"
            + bin2hex(value, JavaCenterHome.JCH_CHARSET) : "\'"
            + mysqlEscapeString(value) + "\'"));
       }
       if (t1.length() + currsize + tabledump.length() < sizelimit) {
        if ("auto_increment".equals(firstfield.getExtra())) {
         startfrom = Integer.valueOf(row.get(firstfield.getField()).toString());
        } else {
         startfrom++;
        }
        if (t2.length() > 0) {
         t2.deleteCharAt(0);
         t1.append(",(" + t2 + ")");
        }
       } else {
        complete = false;
        break;
       }
      }
      if (t1.length() > 0) {
       t1.deleteCharAt(0);
       tabledump.append("INSERT INTO " + table + " VALUES " + t1 + ";\n");
      }
     } else {
      break;
     }
    }
   }
   tabledump.append("\n");
   map.put("startfrom", startfrom);
   map.put("complete", complete);
  }
  map.put("tabledump", tabledump);
  return map;
 }
 private List<TableFieldVO> findTableFieldStatus(String tableName) {
  List<TableFieldVO> fieldStatusVOs = new ArrayList<TableFieldVO>();
  String sql = "SHOW FULL COLUMNS FROM " + tableName;
  Connection conn = null;
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  Transaction transaction = null;
  try {
   Session session = SessionFactory.getSession();
   transaction = session.beginTransaction();
   conn = session.connection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   TableFieldVO fieldStatusVO = null;
   while (rs.next()) {
    fieldStatusVO = new TableFieldVO();
    fieldStatusVO.setField(rs.getString("Field"));
    fieldStatusVO.setType(rs.getString("Type"));
    fieldStatusVO.setAllowNull(rs.getString("Null"));
    fieldStatusVO.setKey(rs.getString("Key"));
    fieldStatusVO.setDefaultValue(rs.getString("Default"));
    fieldStatusVO.setExtra(rs.getString("Extra"));
    fieldStatusVOs.add(fieldStatusVO);
   }
   transaction.commit();
  } catch (Exception exception) {
   exception.printStackTrace();
   if (transaction != null) {
    transaction.rollback();
   }
  } finally {
   try {
    if (transaction != null) {
     transaction = null;
    }
    if (rs != null) {
     rs.close();
     rs = null;
    }
    if (pstmt != null) {
     pstmt.close();
     pstmt = null;
    }
    if (conn != null) {
     conn.close();
     conn = null;
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return fieldStatusVOs;
 }
 private static String bin2hex(String s, String charset) {
  char[] digital = "0123456789abcdef".toCharArray();
  StringBuffer sb = new StringBuffer();
  byte[] bs = null;
  try {
   bs = s.getBytes(charset);
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
  int bit;
  for (int i = 0; i < bs.length; i++) {
   bit = (bs[i] & 0x0f0) >> 4;
   sb.append(digital[bit]);
   bit = bs[i] & 0x0f;
   sb.append(digital[bit]);
  }
  return sb.toString();
 }
 private static String mysqlEscapeString(String text) {
  StringBuffer sb = new StringBuffer(text.length() * 2);
  StringCharacterIterator iterator = new StringCharacterIterator(text);
  char character = iterator.current();
  while (character != StringCharacterIterator.DONE) {
   switch (character) {
    case '"':
     sb.append("\\\"");
     break;
    case '\'':
     sb.append("\\\'");
     break;
    case '\\':
     sb.append("\\\\");
     break;
    case '\r':
     sb.append("\\r");
     break;
    case '\n':
     sb.append("\\n");
     break;
    default:
     sb.append(character);
     break;
   }
   character = iterator.next();
  }
  return sb.toString();
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多