database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 2198 게시물 읽기
No. 2198
sybase 페이징처리 & sybase paging & rowcount
작성자
달뎅이(fplmts98)
작성일
2008-04-16 15:12
조회수
12,816

MS-SQL과 비슷하다기에  하다보니..
서브쿼리에서 TOP이 안먹더군요.

검색해서 찾고 찾아서... 가상테이블을 이용해서 페이징을 완성했습니다.

참고하세요.

PS)쿼리문중에 조건부분은 적절히 수정하셔셔 분석하시기 바랍니다.~



sybase버젼은 아래와 같으며

SELECT @@version

Adaptive Server Enterprise/12.5.4/EBF 14340 ESD#5/P/Sun_svr4/OS 5.8/ase1254/2061/64-bit/FBO/Fri Apr 13 07:33:34 2007

===========================================================================================

int iPageSize  = 10;    //출력시킬 레코드 개수
int iPageSet  = 10;    //페이징 단위
int iMaxCount  = 0;
String strSort  = " REGDATE DESC ";  //정렬기준
String sqlstr  = null;   //sql 쿼리
String strSubSql = null;   //sql 서브
String strCols  = "";   //컬럼


if(iPage==null || iPage.equals("") == true){
 iPage = "1";
}


Date today = new Date();
SimpleDateFormat date = new SimpleDateFormat("yyMMdd");
ToDay_Value=date.format(today);

 

if (startDate.equals("")==false){
 Start_ =  startDate.replaceAll("\\-","").substring(2,8).trim();
}

if (endDate.equals("")==false){
 End_   =  endDate.replaceAll("\\-","").substring(2,8).trim();
}
 


//페이징 계산부분
int Page_Total  = iPageSize*Integer.parseInt(iPage);
int Page_Delete  = (iPageSize*Integer.parseInt(iPage))-iPageSize;

//조건 부분
if(Start_==null || Start_.equals("") == true || End_==null || End_.equals("") == true){

 
 if (strQueryType.equals("")==true){

  strSubSql = " WHERE 1=1 AND STAFF_AGENT_STATE='"+Sa_state+"'";
 
 }else{
  
  strSubSql = " WHERE 1=1 AND STAFF_AGENT_STATE='"+Sa_state+"' AND ("+strQueryType+" like '%"+strQueryWord+"%')";  
 }

 
}else{
 
 strSubSql = " WHERE STAFF_AGENT_STATE='"+Sa_state+"' AND (DATEDIFF(day,REGDATE, '"+Start_+"') <= 0 AND DATEDIFF(day,REGDATE, '"+End_+"') >= 0) AND ("+strQueryType+" like '%"+strQueryWord+"%')";
}

 


StringBuffer sql = new StringBuffer();
try{
 conn = SFADBManager.getConnection();
  
 sqlstr = " SELECT COUNT(*) AS counter FROM 테이블명 "+strSubSql+"";
 
 pstmt = new LoggablePreparedStatement(conn, sqlstr.toString());
 rs = pstmt.executeQuery();
 
 if(rs.next()){
  iMaxCount = rs.getInt("counter");
 }else{
  iMaxCount = 0;
 }
 rs.close();
 
 
 strCols= "불러올 컬럼";
 
 sqlstr = "DECLARE @PAGE_TOTAL INT" +
 " DECLARE @PAGE_DELETE INT" +
 " SET @PAGE_TOTAL="+Page_Total+"" +
 " SET @PAGE_DELETE="+Page_Delete+"" +
 " SET ROWCOUNT @PAGE_TOTAL" +
 " SELECT "+strCols+"  INTO #TEMPA FROM 테이블명 "+strSubSql+" ORDER BY "+strSort+"" +
 " SET ROWCOUNT @PAGE_DELETE" +
 " IF @PAGE_DELETE > 0" +
 " BEGIN" +
 " DELETE FROM #TEMPA" +
 " END" +
 " SELECT * FROM #TEMPA" +
 " DROP TABLE #TEMPA";
 
 //out.println(sqlstr);
 
 
 pstmt = new LoggablePreparedStatement(conn, sqlstr.toString());
 rs = pstmt.executeQuery();

======================

[1][2][3][4][5]...


이부분에서는 iPage라는 변수로 get방식으던 post방식이던 넘겨주면 페이징이 됩니다.



=======================

 

[Top]
No.
제목
작성자
작성일
조회
2201Sybase 12.5 최상위 아이디와 비밀번호? [1]
윤범석
2008-04-18
8085
2200디바이스가 없는 데이터베이스 지우기 [1]
장학우
2008-04-18
7264
2199sybase jdbc driver [1]
강군
2008-04-17
7720
2198sybase 페이징처리 & sybase paging & rowcount
달뎅이
2008-04-16
12816
21971111 [1]
유지보수
2008-04-16
7220
2196Sybase Full Backup 관련 문의드립니다. [1]
하승철
2008-04-15
8867
2195권한설정 질문드립니다~ [1]
정현우
2008-04-07
8477
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다