示例:
    int intPageSize; //一页显示的记录数
    int intRowCount; //记录总数
    int intPageCount; //总页数
    int intPage; //待显示页码
    int i,j,k; //设置一页显示的记录数    public String backdata(int count,String strPage){
        PreparedStatement stmt=null;
        ResultSet rs=null;
        intPageSize = 6; //每页显示6条纪录
        intRowCount=count;
        String backStr="";
        if(strPage==null){
            intPage = 1;
        }else{
            intPage = Integer.parseInt(strPage);
            if(intPage<1)
                intPage = 1;
        }
        //计算总页数
        intPageCount =(intRowCount+intPageSize-1) / intPageSize;
        //调整待显示的页码
        if(intPage>intPageCount) intPage = intPageCount;
        String secondTr="<tr><td nowrap>选择</td><td nowrap>标题</td><td nowrap>文件名</td><td nowrap nowrap>录入部门</td><td nowrap>填写人</td><td nowrap>发布时间</td></tr>";
        String printStr="";
        try{
            stmt=((Connection)this.getEnvironment().lookup("env:res/connection/awh")).prepareStatement(
                "select * from law_statute order by law_publt desc");
            rs=stmt.executeQuery();
            i = (intPage-1) * intPageSize;
            for(j=0;j<i;j++)
                rs.next();
            //显示数据
            i = 0;
            while(i<intPageSize && rs.next()){
                String cid=rs.getString("cid");
                String lawtitle=rs.getString("law_title");
                Date date=rs.getDate("law_publt");
                String lawfilen=rs.getString("law_filen");
                String writdept=rs.getString("writ_dept");
                String writperson=rs.getString("writ_person");
                String lawpublt=date.toString();
                String checkNa="chekb";//+String.valueOf(i);
                printStr=printStr+"<tr><td><input type='checkbox' name='"+checkNa+"' id='"+cid+"'></td><td>"+lawtitle+"</td><td>"+lawfilen+"</td><td>"+writdept+"</td><td>"+writperson+"</td><td>"+lawpublt+"</td></tr>";
                i++;
            }
        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }finally{
            try{
                if(rs!=null) rs.close();
                if(stmt!=null) stmt.close();
            }catch(Exception e){}
        }
        String dataStr="<%strPage = request.getParameter('page');%>";
        String pageStr="第"+intPage+"页 "+" 共"+intPageCount+"页";
        String forPgStr="";
        String backPgStr="";
        if(intPage<intPageCount){
            int pageNum=intPage+1;
            forPgStr="<a href='lawstatute.jsp?page="+pageNum+"'>下一页</a>";
        }
        if(intPage>1){
            int pageNum=intPage-1;
            backPgStr="<a href='lawstatute.jsp?page="+pageNum+"'>上一页</a>";
        }
        String firstTr="<table name='table1' border='1'><tr><td colspan='2'>"+pageStr+"</td><td colspan='2'><b>法律法规</b></td><td colspan='2'>"+forPgStr+"  "+backPgStr+"</td></tr>";
        String lastTr="<tr><td colspan='6'><input type='checkbox' name='checkAll' onclick='checkedAll()'>全选  <label onclick='addData()' style='cursor:hand'>增加</label>&nbsp;<label onclick='amendData()' style='cursor:hand'>修改</label>&nbsp;<label onclick='deleteData()' style='cursor:hand'>删除</label></td></tr>";
        backStr=dataStr+firstTr+secondTr+printStr+lastTr+"</table>";
        return backStr;
    }
    /*--------------------------- end ----------------------------------------*/

解决方案 »

  1.   

    一、运行前准备:建议了一个MS SQLServer7数据库 DNS,名称为:Test_DB,数据库中有一个表:guestbook字段为:email(varchar),body(text)
      数据库用户为sa 密码空,可以自己修改的。 
    二、代码:
     <%@ page contentType="text/html;charset=gb2312"%>
     <% 
     //变量声明 
     java.sql.Connection sqlCon; //数据库连接对象 
     java.sql.Statement sqlStmt; //SQL语句对象 
     java.sql.ResultSet sqlRst; //结果集对象 
     java.lang.String strCon; //数据库连接字符串 
     java.lang.String strSQL; //SQL语句 
     int intPageSize; //一页显示的记录数 
     int intRowCount; //记录总数 
     int intPageCount; //总页数 
     int intPage; //待显示页码 
     java.lang.String strPage; 
     int i,j,k; //设置一页显示的记录数 
     intPageSize = 5; //取得待显示页码 
     strPage = request.getParameter("page"); 
     if(strPage==null){
     //表明在QueryString中没有page这一个参数,此时显示第一页数据 
     intPage = 1; 
     } else{
     //将字符串转换成整型 
     intPage = java.lang.Integer.parseInt(strPage); 
     if(intPage<1) intPage = 1; }
     //装载JDBC-ODBC驱动程序 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     //设置数据库连接字符串 
     strCon = "jdbc:odbc:Test_DB"; 
     //连接数据库 
     sqlCon = java.sql.DriverManager.getConnection(strCon,"sa",""); 
     //创建SQL语句对象 
     sqlStmt = sqlCon.createStatement(); 
     //获取记录总数 
     strSQL = "select count(*) from guestbook"; 
     sqlRst = sqlStmt.executeQuery(strSQL); 
     //执行SQL语句并取得结果集 
     sqlRst.next(); //记录集刚打开的时候,指针位于第一条记录之前 
     intRowCount = sqlRst.getInt(1); 
     sqlRst.close(); //关闭结果集 
     //记算总页数 
     intPageCount = (intRowCount+intPageSize-1) / intPageSize; 
     //调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount; 
     //设置获取数据SQL语句 
     strSQL = "select name,email,body from guestbook"; 
     //执行SQL语句并取得结果集 
     sqlRst = sqlStmt.executeQuery(strSQL);
     //将记录指针定位到待显示页的第一条记录上 
     i = (intPage-1) * intPageSize; 
     for(j=0;j<i;j++) sqlRst.next(); %> 
     <html> 
     <head>
     <title>JSP数据库操作例程 - 数据分页显示 - JDBC-ODBC</title>
     </head> 
     <body> 
     <p align=center>jdbc-odbc留言版</p> 
     <table border="1" cellspacing="0" cellpadding="0" width=600 align=center> 
     <% 
     //显示数据 
     i = 0; 
     while(i<intPageSize && sqlRst.next()){ %> 
     <tr> 
     <td>姓名:<%=sqlRst.getString(1)%></td>
     <td>邮件:<%=sqlRst.getString(2)%></td>
     </tr> 
     <tr> 
     <td colspan=2><%=sqlRst.getString(3)%></td>
     </tr>
     <% i++; } %>
     <tr> 
     <td colspan=2 align=center> 
     第<%=intPage%>页 共<%=intPageCount%>页 
     <%if(intPage<intPageCount){%>
     <a href="mssql.jsp?page=<%=intPage+1%>">下一页</a><%
     }
     %> 
     <%if(intPage>1){%>
     <a href="mssql.jsp?page=<%=intPage-1%>">上一页</a><%
     }
     %> 
     </td> 
     </tr>
     </table> </body> 
     </html> 
     <% 
     //关闭结果集 
     sqlRst.close(); 
     //关闭SQL语句对象 
     sqlStmt.close(); 
     //关闭数据库
     sqlCon.close();
     %>三、怎么去运行?
      将代码存为文件test.jsp
      Orion Application Server下:
      Copy到orion的default-web-app目录下,通过:
      http://localhost:port/test.jsp
      访问测试
      对于Resin,Tomcat,JWS等等,都可以运行通过。******************************************
    一、前言:
       其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之六(MySQL翻页例子) 》 简单改写了一下。二、配置:
    (1)JDBC
       需要将用到的JDBC驱动Copy到[ORION]/lib目录下
    (2)data-source
       在[ORION]/config/data-sources.xml文件中加入如下:
      〈data-source 
       class="com.evermind.sql.DriverManagerDataSource" 
       name="mySqlDbpage" 
       location="jdbc/HypersonicCoreDS" 
       xa-location="jdbc/xa/HypersonicXADS" 
       ejb-location="jdbc/mysqlDbPage"
       connection-driver="org.gjt.mm.mysql.Driver" 
       username="root"
       password=""
       url="jdbc:mysql://localhost/test" 
       inactivity-timeout="30"
       /〉需要注意的是:
      (1)ejb-location这个后面的“jdbc/mysqlDbPage”是JNDI要来查找的。
      (2)connection-driver为JDBC数据库驱动
      (3)url是JDBC中的URL
      (4)username为数据库用户名
      (5)password为用户密码
      (6)inactivity-timeout为数据库连接超时,默认为30秒
       对于其他的地方不要改。三、改写后的代码如下:
      <%@ page contentType="text/html;charset=gb2312" %>
      <%@ page import="java.sql.*, javax.sql.DataSource, javax.naming.InitialContext" %>
      <% 
      //建立一个JNDI查找对象 
      InitialContext JNDI_Context = new InitialContext(); 
      //JNDI查找数据源 
      DataSource ds = (DataSource) JNDI_Context.lookup("jdbc/mysqlDbPage"); 
      //得到一个数据源连接
      Connection conn = ds.getConnection(); 
      int intPageSize; //一页显示的记录数 
      int intRowCount; //记录总数 
      int intPageCount; //总页数 
      int intPage; //待显示页码 
      java.lang.String strPage; 
      int i;
      //设置一页显示的记录数
      intPageSize = 2;
      //取得待显示页码 
      strPage = request.getParameter("page"); 
      if(strPage==null){
      //表明在QueryString中没有page这一个参数,此时显示第一页数据 
      intPage = 1; 
      } else{
      //将字符串转换成整型 
      intPage = java.lang.Integer.parseInt(strPage); 
      if(intPage<1) intPage = 1;
      } 
      // 得到结果
      stmt = conn.createStatement(); 
      ResultSet sqlRst = stmt.executeQuery("select f1 from test"); 
      //获取记录总数 
      sqlRst.last(); 
      intRowCount = sqlRst.getRow(); 
      //记算总页数 
      intPageCount = (intRowCount+intPageSize-1) / intPageSize; 
      //调整待显示的页码 
      if(intPage>intPageCount) 
      intPage = intPageCount;
      %>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
      <title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - mysql</title> 
      </head> 
      <body> 
      <table border="1" cellspacing="0" cellpadding="0">
      <tr> 
      <th>姓名</th> 
      </tr>
      <% if(intPageCount>0)
      { 
      //将记录指针定位到待显示页的第一条记录上 
      sqlRst.absolute((intPage-1) * intPageSize + 1); 
      //显示数据 
      i = 0;
      while(i<intPageSize && !sqlRst.isAfterLast()){ %> 
      <tr> 
       <td>
      <%=sqlRst.getString(1)%>
      </td> 
      </tr>
      <% sqlRst.next(); 
      i++; 
      } 
      } 
      %> 
      </table>
      第<%=intPage%>页 共<%=intPageCount%>页 
      <%if(intPage<intPageCount){%><a href="mysqlpage.jsp?page=<%=intPage+1%>">下一页</a><%}%>
      <%if(intPage>1){%><a href="mysqlpage.jsp?page=<%=intPage-1%>">上一页</a><%}%> 
      </body> 
      </html>
      <% 
      //关闭结果集 
      sqlRst.close(); 
      %>
      
    三、怎么去运行?
       见前文《JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)》。
      注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)