?? result.java
字號:
/*
* @(#)Result.java
*
* Copyright 2003 by SYNTC, All rights reserved.
*
* This software is the confidential and proprietary information of SYNTC.
* ("Confidential Information").
*/
package cn.com.syntc.common.io;
/**
* 結果集封裝<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 + -