
package pagetest;

import java.sql.*;
import java.util.*;

public class PageCountTest
{
   protected Connection con;
   protected Statement  stmt;
   protected ResultSet  rs;
    
   protected boolean Connect()          //连接数据库
   {
      try
      {			 
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

         con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=PageTest;SelectMethod=direct","sa","");

         stmt=con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);	//建立Statement对象	    
         return true;
      }
      catch(Exception e)
      {
         e.printStackTrace();
         return false;		  	
      }
   }

   public int getPageCount(int PageSize)  //得到数据集页数 PageSize:每页长度
   {           
   	    String SQL=new String();
		SQL="SELECT COUNT(*) AS Count FROM CourseTable";//选择表中纪录条数
		
		try
		{
			if(!Connect()) return 0;//连接数据库
			
			rs=stmt.executeQuery(SQL);  //得到数据集
			
			rs.next();                  //将游标移到第一条纪录
			int rows=rs.getInt("Count");//得到表中纪录条数
			double tmp=(double)rows/(double)PageSize+(int)(rows%PageSize==0?0:1); //计算总页数
			rows=(int)tmp;
			
		    DisConnect();               //断开与数据库的连接
		    return rows;                //返回结果
		}
		catch(Exception e)
		{
		    DisConnect();               //错误处理
		    e.printStackTrace();
		    return 0;	
		}	
   }

   public Vector ReadInfByPage(int PageIndex,int PageSize)
   {  
   	    String SQL=new String();
		Vector result=new Vector();		
		SQL="SELECT * FROM CourseTable";//选择表中所有数据

		try
		{
            int PageCount=getPageCount(PageSize); //得到数据页数
            if(PageIndex>PageCount) return null;  //是否超出页数范围

			if(!Connect()) return null;	          //连接数据库
			rs=stmt.executeQuery(SQL);            //得到数据集
            
			rs.absolute((PageIndex-1)*PageSize+1);//定位到该页起始数据
			rs.previous();
			int rows=0;
			
			while(rs.next() && rows<PageSize && !rs.isAfterLast())
			{      //此循环将该页全部数据放入集合类result
				String tmp=new String();
                tmp=rs.getString("CourseID")+":";
                tmp+=rs.getString("CourseName");

				result.addElement(tmp);
				rows+=1;
			}			
			DisConnect();       //与数据库断开连接
		    return result;      //返回结果
		}
		catch(Exception e)
		{
		    DisConnect();       //错误处理  
		    e.printStackTrace();
		    return null;	
		}
   }
   
   protected boolean DisConnect()       //断开与数据库的连接
   {
    	try
        { 
            rs.close();
			stmt.close();
			con.close();
    	    return true;
        }
        catch(Exception e)
        {
        	return false;
        }
   }

}
