📄 result.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 + -