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

📄 result.java

📁 webwork study w ebwork study
💻 JAVA
字号:
package jaction.datapool;

/**
 *	结果集封装<br>
 * @author yanger
 * @version 1.0
 */
import java.util.*;
import java.sql.*;
import java.lang.reflect.*;
import java.io.*;


/**
 *	数据库操作结果集.<br>
 *  @version 1.0
 *		<pre>
 *		示例:
 *		...
 *		Result result = JDBC.executeQuery("select * from tab",connection);<br>
 *		if (result.totalNum() == -1) {
 *			// 数据库操作错误
 *		} else if (result.totalNum() == 0) {
 *			// 数据库操作成功,但数据库中没有相应结果
 *			...
 *		} else {
 *			// 数据库操作成功<br>
 *			String userID = (String)result.getObject(0, 0); // 取第一行,第一列
 *			...
 *		}
 *		</pre>
 */

public class Result  extends Object  implements Serializable{

	/**
	 *	数据库操作结果
	 */
	private Object[][] result = null;
	
	/**
	 *	数据库操作结果对应的列名(别名)
	 */
	private String[] columnName = null;
	
	/**
	 *	结果数组列数
	 */
	private int colNumber = -1;
	
	/**
	 *	结果数组行数
	 */
	private int rowNumber = -1;
	
	/**
	 *	结果数组总行数
	 */
	private int totalNumber = -1;

	public Result() {

	}

	/**
	 *	将数据库操作结果数组放进Result类中
	 *
	 *	@param	rs	数据库操作结果数组,带列名
	 */
	public Result(Object[][] rs) {
		//weigang
		//if (rs != null) {
		if (rs != null && rs.length != 1){
		        result = new Object[rs.length - 1][rs[0].length];
		        // 列名赋值
		        columnName = (String [])rs[0];
		        // 数据赋值
		        for (int i=0;i<result.length ;i++ )
		                for (int j=0;j<result[0].length ;j++ )
		                                result[i][j] = rs[i+1][j];

		        rowNumber = result.length   ;
		        colNumber = result[0].length;
		        totalNumber = result.length ;
		} else {
		        rowNumber = 0;
		        colNumber = 0;
		        totalNumber = 0;
		}
	}

	/**
	 *	将数据库操作结果数组放进Result类中
	 *
	 *	@param	rs	数据库操作结果数组
	 *	@param	totalNumber	结果数组总记录数
	 */
	public Result(Object[][] rs,int totalNumber) {

	        result = rs;
	        if (result != null) {
	                this.rowNumber = result.length;
	                this.colNumber = result[0].length;
	                this.totalNumber = totalNumber;
	        }else{
	                this.rowNumber = 0;
	                this.colNumber = 0;
	                this.totalNumber = 0;
	        }
	}

	/**
	 *	返回总记录数
	 *
	 *	@return 总记录数
	 */
	public int totalNum() {
	        return totalNumber;
	}

	/**
	 *	返回记录总数
	 *
	 *	@return 记录总数
	 */
	public int rowNum() {
	        return rowNumber;
	}

	/**
	 *	返回记录列数
	 *
	 *	@return 记录列数
	 */
	public int colNum() {
	        return colNumber;
	}

	/**
	 *	得到相应行、列位置的结果对象
	 * @param  i 行位置
	 * @param  j 列位置
	 *	@return 相应行、列位置的结果对象
	 */
	public Object getObject(int i, int j) {
	        return result[i][j];
	}
	/**
	 *	得到相应行、列位置的字符串结果
	 * @param  i 行位置
	 * @param  j 列位置
	 *	@return 相应行、列位置的字符串结果
	 */
	public String getString(int i, int j)
	{
	        Object obj = result[i][j];
	        if (obj == null) return null;
	        return obj.toString ( );
	}

	/**
	 *	得到相应行、列位置的字符串结果
	 *  如果是null,则转换为""
	 * @param  i 行位置
	 * @param  j 列位置
	 *	@return 相应行、列位置的字符串结果
	 */
	//weigang
	public String getStringNoNull(int i, int j)
	{
	        Object obj = result[i][j];
	        if (obj == null) return "";
	        return obj.toString ( );
	}

	/**
	 *	得到相应行、列位置的整数结果
	 * @param  i 行位置
	 * @param  j 列位置
	 *	@return 相应行、列位置的整数结果
	 */
	public int getInt(int i, int j)
	{
	        String tmp;
	        //weigang 20030113 如果字段为null,返回-1
	        Object obj = result[i][j];
	        if(obj == null) return -1;
	        
	        tmp =result[i][j].toString ();
	        return Integer.parseInt ( tmp );
	}
	/**
	 *	得到查询结果数据
	 *	@return  已二维数组的形式返回结果集
	 */
	public Object[][] getData()
	{
	        return result;
	}

	/**
	 * 得到数据库操作结果对应的列名(别名)
	 * @return  返回结果集中的列名数组
	 */
	public String[] getColumnName(){
		return columnName;
	}

	/**
	 *	得到所有行、列的字符串数组,其中第一行为各列的名称,每一行为一条记录,如下所示:<br>
	 *	ColumnName0 ColumnName1 ColumnName2 ColumnName3 ... ColumnName[N]<br>
	 *	xxx  			xxx  		xxx  			xxx  			xxx<br>
	 *	xxx 			xxx 		xxx			  xxx			  xxx<br>
	 *	xxx			  xxx		  xxx			  xxx			  xxx<br>
	 *	...<br>
	 *	xxx			  xxx		  xxx			  xxx			  xxx<br>
	 * 	@return  所有行、列的字符串数组。
	 */
	public String[][] toStringArray( ) throws  Exception
	{
	        int i;
	        int j;
	        if ( totalNumber < 1 ) return null;

	        String[][] data = new String[rowNum()+1][colNum()];

	        //赋值COLUMN NAME
	        for(j=0;j<columnName.length;j++)
	        {
	                // Ebank 转换类型大小写
	                String fieldName=getObject(0,j).toString();
	                data[0][j] = fieldName;
	                //
	        }

	        for ( i = 0;i<rowNum();i++) {
	                for ( j = 0;j<colNum();j++) {
	                        Object object = getObject(i,j);
	                        if (object instanceof String)
	                                data[i+1][j] = (String)getObject(i,j);
	                        else {
	                                if (object != null)
	                                        data[i+1][j] = object.toString();
	                                else
	                                        data[i+1][j] = null;
	                        }
	                }
	        }
	//	for (i = 0;i<data.length ;i++ )
	//	for (j = 0;j<data[0].length ;j++ )
	//			System.out.println(data[i][j]);
	        return data;
	}

	/**
	 *	数据为空时记录:""而非null
	 *  得到所有行、列的字符串数组,其中第一行为各列的名称,每一行为一条记录,如下所示:<br>
	 *	NAME  DATA0 DATA1 DATA2 DATA3 ... DATA[N]<br>
	 *	NAME0  xxx  xxx  xxx  xxx  xxx<br>
	 *	NAME1  xxx  xxx  xxx  xxx  xxx<br>
	 *	NAME2  xxx  xxx  xxx  xxx  xxx<br>
	 *	...<br>
	 *	NAME0  xxx  xxx  xxx  xxx  xxx<br>
	 * 	@return  所有行、列的字符串数组。
	 */
	public String[][] toStringArrayNonull( )
	{
	        int i;
	        int j;
	        if ( totalNumber<0 ) return null;

	        String[][] data = new String[rowNum()+1][colNum()+1];
	        data[0][0] = "NAME";
	        for ( i = 0;i<colNum();i++) {
	                data[0][i+1] = "DATA" + i;

	        }
	        for ( i = 0;i<rowNum();i++) {
	                data[i+1][0] = "NAME" + i;
	        }
	        for ( i = 0;i<rowNum();i++) {
	                for ( j = 0;j<colNum();j++) {
	                        Object object = getObject(i,j);
	                        if (object instanceof String)
	                                data[i+1][j+1] = (String)getObject(i,j);
	                        else {
	                                if (object != null)
	                                        data[i+1][j+1] = object.toString();
	                                else
	                                        data[i+1][j+1] = "";
	                        }
	                }
	        }
	        return data;
	}
                ///////////////////////////////////////////////////////////////////////////
	/**
	 *	数据为空时记录:""而非null
	 *  得到所有行、列的字符串数组,其中第一行为各列的名称,每一行为一条记录,如下所示:<br>
	 *	NAME 			 DATA0 DATA1 DATA2 DATA3 ... DATA[N]<br>
	 *	NAME(beginRow) 	  xxx  xxx  xxx  xxx  xxx<br>
	 *	NAME(beginRow+1)  xxx  xxx  xxx  xxx  xxx<br>
	 *	NAME(beginRow+2)  xxx  xxx  xxx  xxx  xxx<br>
	 *	...<br>
	 *	NAME(beginRow+rowNumber) xxx  xxx  xxx  xxx  xxx<br>
	 *  @param  beginRow  开始行数
	 *  @param  rowNumber 取得记录数
	 * 	@return  选择行、列的字符串数组。
	 */
	public String[][] toStringArrayNonull(int beginRow, int rowNumber )
	{
	        int i;
	        int j;
	        int k=beginRow;
	        if ( totalNumber<0 ) return null;

	        String[][] datas = toStringArrayNonull();
	        String[][] data = new String[rowNumber+1][colNum()+1];
	        for(i=0;i<rowNumber+1;i++){
	                for(j=0;j<colNum()+1;j++){
	                        data[i][j]=datas[k][j];
	                }
	                k++;
	        }

	        return data;
	}

	/**
	 * 得到结果集中的二维数据
	 * @return  以二维数组的形式返回结果集,为null的成员改为""
	 */
	public String[][] toStringArrayNoName(){

		String[][] tmpString = new String[rowNumber][colNumber];
		for(int i = 0; i < rowNumber; i++){
			for(int j = 0; j < colNumber; j++){
					if(this.getString(i,j) == null){
						tmpString[i][j] = "";
					}
					else{
						tmpString[i][j] = this.getString(i, j);
					}
				}
		}
		return tmpString;
	}
	
		

////////////////////////////////////////////////////////////////////////////////////
//测试
			public static void main(String[] args){
			
			}


}

⌨️ 快捷键说明

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