将记录集转换成二维数组或特殊字符串

来源:互联网 发布:知乎 语音识别api 编辑:程序博客网 时间:2024/05/12 10:43

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
/**
 * 这个类封装了对记录集的操作
 * time:2004-07-07
 * @author:董政利
 * @version 1.0
 */
public class RS
{
 //记录集
 private ResultSet rs;
 //记录集详细信息
 private ResultSetMetaData rsmd;
 //记录集列的个数
 private int numCols;
 //记录集行的个数
 private int numRows;

 /**
     * 构造函数
     */
 public RS()
 {
 
 }
 /**
     * 初始化记录集
     */
 public void setRS(ResultSet rs)
 {
  this.rs=rs;
  try
  {
   rsmd=rs.getMetaData();
   numCols=rsmd.getColumnCount();
     }
     catch (Exception ex)
     {
      System.out.println ("dzl:RS--> setRS: "+ex.toString());
     }  
 }
 /**
     * 返回记录集的列数
     */
 public int getColCount()
 {
  return numCols;
 }

 /**
     * 获取记录集行数
     */
 public int getRowCount()
 {
  numRows=-1;
  try
  {
   rs.last();
   numRows = rs.getRow();
   rs.beforeFirst();   
  }
  catch(Exception ex)
  {
   System.out.println ("dzl:RS-->getColCount: "+ex.toString());             
  }
  return numRows;
 }
 /**
     * 返回指定记录集的所有列名
     */
 public String[] getColName()
 {
  String md[]=new String[numCols];
  try
  {
   for (int i = 1; i   {
    md[i-1]=rsmd.getColumnName(i);
   }
     }
     catch (Exception ex)
     {
      System.out.println ("dzl:RS-->getColName: "+ex.toString());      
     }
     return md;
 }
 /**
     * 将行的内容复制到数组中
     */
 private String[] getRowValue()
 {
  String[] row=new String[numCols];
  try
  {
   for (int i = 1; i   {
    row[i-1]=rs.getString(i);
      }
     }
     catch (Exception ex)
     {
      System.out.println ("dzl:RS-->getRowValue: "+ex.toString());            
     }
     return row;
 }
 /**
  * 将记录集中的数据复制到数组中
     */
 public String[][] getArray(boolean hasTitle)
 {
  ArrayList al =new ArrayList(); 
  String[][] allValue=null;
  try
  {
   if(hasTitle)
   {
    al.add(getColName());  
   }
   while(rs.next())
   {
    al.add(getRowValue());
   }
   rs.beforeFirst();
   Object[] arryObject =(Object[])al.toArray();
   int rowLen=arryObject.length;
   int colLen=numCols;
   allValue=new String[rowLen][colLen];
   String[] rowValue=null; 
   for (int i = 0; i   {
    rowValue=(String[])arryObject[i];
    for (int j = 0; j    {
     allValue[i][j]=rowValue[j];
    } 
   }
   return allValue;
  }
  catch(Exception ex)
  {
      System.out.println ("dzl:RS-->getArray: "+ex.toString());                          
  }
  return allValue;
 }
 /**
  * 将记录集转换成字符串
     */
 public String  toString(String rowToken,String colToken,boolean hasTitle) throws Exception
 {
  String strAllValue="";
  String[][] allValue=getArray(hasTitle);
  for(int i=0;i  { 
   for(int j=0;j   {
    strAllValue+=allValue[i][j]+colToken;
   }
   strAllValue=strAllValue.substring(0,strAllValue.length()-1)+rowToken;
  }
  strAllValue=strAllValue.substring(0,strAllValue.length()-1);
  return strAllValue;
 }

 /**
     * 关闭记录集
     */
 public void closeRS()
 {
  try
  {
   rs.close();
   rs=null;
     }
     catch (Exception ex)
     {
      System.out.println ("dzl:RS-->Close: "+ex.toString());                        
     }
 }
}
上面的代码主要实现了对resultset的一些高级方法,其中有很多不足之处希望大家多多指教。

原创粉丝点击