📄 sqlpageutil.java
字号:
/*****************************************************************************
* (C) Copyright 2004 。
* 保留对所有使用、复制、修改和发布整个软件和相关文档的权利。
* 本计算机程序受著作权法和国际公约的保护,未经授权擅自复制或
* 传播本程序的全部或部分,可能受到严厉的民事和刑事制裁,并
* 在法律允许的范围内受到最大可能的起诉。
*/
/*****************************************************************************
* @作者:Golden Peng
* @版本: 1.0
* @时间: 2002-10-08
*/
/*****************************************************************************
* 修改记录清单
* 修改人 :
* 修改记录:
* 修改时间:
* 修改描述:
*
*/
package com.corp.bisc.ebiz.util;
import com.corp.bisc.ebiz.base.*;
import java.sql.*;
import java.util.*;
/**
* 此处插入类型描述。
* 创建日期:(2002-6-21 17:40:25)
* @author:pangwei
*/
public class SQLPageUtil extends ObjectBase{
/**
* SQLPageUtil 构造子注解。
*/
public SQLPageUtil() {
super();
}
/**
* 此处插入方法描述。
* 创建日期:(2002-6-21 17:42:19)
* @return com.corp.bisc.ebiz.base.BizComponent
* @param conn java.sql.Connection
* @param SQL java.lang.String
* @param record int
* @param first int
* @exception java.sql.SQLException 异常说明。
*/
public static void getOnePage(Connection conn, BizComponent bc, ResultSet rs, int record, int first) throws java.sql.SQLException {
if(record == 0){
bc.fromResultSet(rs);
return ;
}
if(first <1){
System.out.println("the first record number error");
return;
}
int currNumber = first;
int end = currNumber + record-1;
int total = 0;
ResultSetMetaData rsmd = rs.getMetaData();
int columncount = rsmd.getColumnCount();
Vector colNameVector = new Vector();
for(int i=1;i<=columncount;i++){
colNameVector.add(rsmd.getColumnName(i));
}
bc.newRecord();
while(rs.next()){
total ++;
if( (total>=currNumber ) && (total<=end) ){
bc.newRecord();
for(int i=0;i<columncount;i++){
String colname = (String)colNameVector.elementAt(i);
Object value = rs.getObject(colname);
String val = "";
if(value != null){
val = SSEDataConverter.toString(value,2);
}
bc.setFieldValue(colname,val);
}
}
//System.out.println(total);
}
boolean isLast = false;
boolean hasNextPage = false;
boolean hasPreviousPage = false;
int totalPage = total / record;
if(total % record > 0)
totalPage ++;
if(end >= total){
isLast = true;
end = total;
}
bc.moveFirst();
bc.setFieldValue("totalPage",new Integer(totalPage).toString());
if(!isLast)
hasNextPage=true;
if(currNumber-record>=0)
hasPreviousPage=true;
bc.setFieldValue("hasNextPage",new Boolean(hasNextPage).toString());
bc.setFieldValue("hasPreviousPage",new Boolean(hasPreviousPage).toString());
bc.setFieldValue("cursor",new Integer(currNumber).toString());
bc.setFieldValue("record",new Integer(record).toString());
bc.setFieldValue("currPage",new Integer(currNumber/record+1).toString());
bc.setFieldValue("totalRecord",new Integer(total).toString());
}
/**
* 此处插入方法描述。
* 创建日期:(2002-6-21 17:42:19)
* @return com.corp.bisc.ebiz.base.BizComponent
* @param conn java.sql.Connection
* @param SQL java.lang.String
* @param record int
* @param first int
* @exception java.sql.SQLException 异常说明。
*/
public static BizComponent getOnePage(Connection conn, String SQL, int record, int first) throws java.sql.SQLException {
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(SQL);
if(record == 0){
BizComponent bc = new BizComponent("totalResult");
bc.fromResultSet(rs);
return bc;
}
if(first <1){
System.out.println("the first record number error");
return null;
}
int currNumber = first;
int end = currNumber + record-1;
int total = 0;
ResultSetMetaData rsmd = rs.getMetaData();
int columncount = rsmd.getColumnCount();
Vector colNameVector = new Vector();
for(int i=1;i<=columncount;i++){
colNameVector.add(rsmd.getColumnName(i));
}
BizComponent bc = new BizComponent("totalResult");
bc.newRecord();
while(rs.next()){
total ++;
if( (total>=currNumber ) && (total<=end) ){
bc.newRecord();
for(int i=0;i<columncount;i++){
String colname = (String)colNameVector.elementAt(i);
Object value = rs.getObject(colname);
String val = "";
if(value != null){
val = SSEDataConverter.toString(value,2);
}
bc.setFieldValue(colname,val);
}
}
//System.out.println(total);
}
boolean isLast = false;
boolean hasNextPage = false;
boolean hasPreviousPage = false;
int totalPage = total / record;
if(total % record > 0)
totalPage ++;
if(end >= total){
isLast = true;
end = total;
}
bc.moveFirst();
bc.setFieldValue("totalPage",new Integer(totalPage).toString());
if((end)<total)
hasNextPage=true;
if(currNumber-record>=0)
hasPreviousPage=true;
bc.setFieldValue("hasNextPage",new Boolean(hasNextPage).toString());
bc.setFieldValue("hasPreviousPage",new Boolean(hasPreviousPage).toString());
bc.setFieldValue("cursor",new Integer(currNumber).toString());
bc.setFieldValue("record",new Integer(record).toString());
bc.setFieldValue("currPage",new Integer(currNumber/record+1).toString());
bc.setFieldValue("totalRecord",new Integer(total).toString());
stat.close();
return bc;
}
/**
* 此处插入方法描述。
* 创建日期:(2002-6-21 17:42:19)
* @return com.corp.bisc.ebiz.base.BizComponent
* @param conn java.sql.Connection
* @param SQL java.lang.String
* @param record int
* @param first int
* @exception java.sql.SQLException 异常说明。
*/
public static BizComponent getOnePage(Connection conn, ResultSet rs, int record, int first) throws java.sql.SQLException {
if(record == 0){
BizComponent bc = new BizComponent("totalResult");
bc.fromResultSet(rs);
return bc;
}
if(first <1){
System.out.println("the first record number error");
return null;
}
int currNumber = first;
int end = currNumber + record-1;
int total = 0;
ResultSetMetaData rsmd = rs.getMetaData();
int columncount = rsmd.getColumnCount();
Vector colNameVector = new Vector();
for(int i=1;i<=columncount;i++){
colNameVector.add(rsmd.getColumnName(i));
}
BizComponent bc = new BizComponent("totalResult");
bc.newRecord();
while(rs.next()){
total ++;
if( (total>=currNumber ) && (total<=end) ){
bc.newRecord();
for(int i=0;i<columncount;i++){
String colname = (String)colNameVector.elementAt(i);
Object value = rs.getObject(colname);
String val = "";
if(value != null){
val = SSEDataConverter.toString(value,2);
}
bc.setFieldValue(colname,val);
}
}
//System.out.println(total);
}
boolean isLast = false;
boolean hasNextPage = false;
boolean hasPreviousPage = false;
int totalPage = total / record;
if(total % record > 0)
totalPage ++;
if(end >= total){
isLast = true;
end = total;
}
bc.moveFirst();
bc.setFieldValue("totalPage",new Integer(totalPage).toString());
if((end)<total)
hasNextPage=true;
if(currNumber-record>=0)
hasPreviousPage=true;
bc.setFieldValue("hasNextPage",new Boolean(hasNextPage).toString());
bc.setFieldValue("hasPreviousPage",new Boolean(hasPreviousPage).toString());
bc.setFieldValue("cursor",new Integer(currNumber).toString());
bc.setFieldValue("record",new Integer(record).toString());
bc.setFieldValue("currPage",new Integer(currNumber/record+1).toString());
bc.setFieldValue("totalRecord",new Integer(total).toString());
return bc;
}
/**
* 此处插入方法描述。
* 创建日期:(2002-6-21 17:42:19)
* @return com.corp.bisc.ebiz.base.BizComponent
* @param conn java.sql.Connection
* @param SQL java.lang.String
* @param record int
* @param first int
* @exception java.sql.SQLException 异常说明。
*/
public static void gotoOnePage(Connection conn, BizComponent bc, ResultSet rs, int record, int gotopage) throws java.sql.SQLException {
if(record == 0){
bc.fromResultSet(rs);
return ;
}
if(gotopage <1){
System.out.println("error: the page number to go < 1");
return;
}
int currNumber = (gotopage-1)*record;
int end = currNumber + record-1;
int total = 0;
ResultSetMetaData rsmd = rs.getMetaData();
int columncount = rsmd.getColumnCount();
Vector colNameVector = new Vector();
for(int i=1;i<=columncount;i++){
colNameVector.add(rsmd.getColumnName(i));
}
bc.newRecord();
while(rs.next()){
total ++;
if( (total>=currNumber ) && (total<=end) ){
bc.newRecord();
for(int i=0;i<columncount;i++){
String colname = (String)colNameVector.elementAt(i);
Object value = rs.getObject(colname);
String val = "";
if(value != null){
val = SSEDataConverter.toString(value,2);
}
bc.setFieldValue(colname,val);
}
}
//System.out.println(total);
}
boolean isLast = false;
boolean hasNextPage = false;
boolean hasPreviousPage = false;
int totalPage = total / record;
if(total % record > 0)
totalPage ++;
if(end >= total){
isLast = true;
end = total;
}
bc.moveFirst();
bc.setFieldValue("totalPage",new Integer(totalPage).toString());
if(!isLast)
hasNextPage=true;
if(currNumber-record>=0)
hasPreviousPage=true;
bc.setFieldValue("hasNextPage",new Boolean(hasNextPage).toString());
bc.setFieldValue("hasPreviousPage",new Boolean(hasPreviousPage).toString());
bc.setFieldValue("cursor",new Integer(currNumber).toString());
bc.setFieldValue("record",new Integer(record).toString());
bc.setFieldValue("currPage",new Integer(currNumber/record+1).toString());
bc.setFieldValue("totalRecord",new Integer(total).toString());
}
/**
* 此处插入方法描述。
* 创建日期:(2002-6-21 17:50:00)
* @param args java.lang.String[]
*/
public static void main(String[] args) {
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@portal2", "infopub", "infopub");
String sql = "select * from LC_STOCK_STRUCTURES where rownum<30";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
BizComponent biz = new BizComponent("aa");
SQLPageUtil.getOnePage(conn,biz,rs,10,11);
biz.dump(System.out);
}catch(Exception e){
System.out.println(e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -