dkmilk(迪克牛奶) 误解了我的意思,我想要java代码,不是jscript

解决方案 »

  1.   

    以下的代码可以实现
    <%@ page language="java" import="java.sql.*" %>
    <%@ page contentType="text/html;charset=gb2312" %>
    <%
    //变量声明
    //数据库连接对象
    Connection sqlCon; 
    //Statement对象
    Statement sqlStmt; 
    //记录集对象
    ResultSet sqlRst;  
    //数据库连接字符串
    String strCon;    
    //SQL语句
    String strSQL;    
    //每页记录数
    int intPageSize;           
    //记录总数
    int intRowCount;           
    //总页数
    int intPageCount;          
    //当前页码
    int intPage;
    //传递参数用变量               
    String strPage;
    //循环变量
    int i;//定义每页记录数为0
    intPageSize =10;//获得当前页码
    strPage = request.getParameter("page");
    //以不带页码访问时,没有参数,此时为首页
    if(strPage==null){
       intPage = 1;
    }
    else{
    //转换字符串为整型
       intPage = java.lang.Integer.parseInt(strPage);
    //对于小于的变量,设置当前页为第一页
       if(intPage<1) intPage = 1;
    }
    //下面的代码为加载JDBD-ODBC驱动程序
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//设置数据库连接字符串
    //使用js dsn连接
    strCon="jdbc:odbc:js";//连接数据库
    sqlCon = DriverManager.getConnection(strCon,"","");//创建一个记录指针可以上下移动的只读的Statement对象
    sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//准备SQL语句
    strSQL = "select * from 论文";//执行SQL语句,获得返回集
    sqlRst = sqlStmt.executeQuery(strSQL);//系统记录指针对最后一行
    sqlRst.last();//获得总行数
    intRowCount = sqlRst.getRow();//计算总页数
    intPageCount = (intRowCount+intPageSize-1) / intPageSize;//对于大于总页数的页面,调整为最大页码
    if(intPage>intPageCount) intPage = intPageCount;
    %>
    <html><head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>翻页程序示例</title>
    </head><p align=center>翻页程序示例</p>
    <body>
    <!--在HTML中画一张表格用于显示记录-->
    <table border="0" width="100%" cellspacing="1" cellpadding="0" height="167">
      <tr>
        <td width="80%" height="165" valign="top">
        <table border="0" cellspacing="0" cellpadding="0" width="100%" height="81"><!--定义表头--->
    <tr>
       <td width="37" bgcolor="#CCFFCC" height="18">编号</td>
       <td width="129" bgcolor="#CCFFCC" height="18">名称</td>
       <td width="165" bgcolor="#CCFFCC" height="18">发表日期</td>
       <td width="69" bgcolor="#CCFFCC" height="18">作者</td>
       <td width="137" bgcolor="#CCFFCC" height="18">文件名</td>
    </tr><%
    if(intPageCount>0){
    //移动记录指针到待显示页的第一条记录上
       sqlRst.absolute((intPage-1) * intPageSize + 1);//显示当前记录
       i = 0;
       while(i<intPageSize && !sqlRst.isAfterLast()){
          %>
    <tr bgcolor=#f2f2e6>
       <td width="37" height="18"><%=sqlRst.getString(1)%></td>
       <td width="129" height="18"><%=sqlRst.getString(2)%></td>
       <td width="165" height="18"><%=sqlRst.getString(3)%></td>
       <td width="69" height="18"><%=sqlRst.getString(4)%></td>
       <td width="137" height="18"><%=sqlRst.getString(5)%></td>
    </tr>
          <%
    //移动到下一条记录
          sqlRst.next();
          i++;
       }
    }
    %></table>    <table border="0" width="100%" cellspacing="0" cellpadding="0" height="52">
          <tr>
    <!--定义翻页用表单-->
    <form action="PageView.jsp" method="GET">
     
    <td height="52" bgcolor="#99FFCC" align="right"> 
    <% 
    //生成用于翻页的超链
    if(intPage!=1)
    //不是第一页,生成........
        {        out.println("<A HREF=PageView.jsp?page=1>第一页</A>");
          out.println("<A HREF=PageView.jsp?page=" + (intPage-1) + ">上一页</A>");
         }
    if(intPage!=intPageCount)
    //不是最后一页,生成........
         {
          out.println("<A HREF=PageView.jsp?page=" + (intPage+1) + ">下一页</A>");
          out.println("<A HREF=PageView.jsp?page=" + intPageCount + ">最后一页</A>");
          }
    %>     输入页数:<input type="text" size="3" name="Page">
    <!--显示当前页数与总页数-->
        页数:<font color="#FF0000"><%=intPage%>/<%=intPageCount%></font>     
     </form>   
          </tr>   
        </table>   
          </body>  
      
    </html>  
    <%  
    //关闭记录集
    sqlRst.close();  
      
    //关闭Statement对象  
    sqlStmt.close();  
      
    //关闭数据库  
    sqlCon.close();  
    %>  
      

  2.   

    xxyangwang(K歌之王)的例子很经典啊,我在很多地方,很多书都看过,不过小弟不才,全部照搬都跑不起来,总是出错
      

  3.   

    我用的就是xxyangwang(K歌之王)的例子呀 很不错的呀~~~~~~~  呵呵~~~~~~~
    慢慢改吧~~~
      

  4.   

    我又遇到一个问题啦,用xxyangwang(K歌之王)的例子执行静态的sql语句没问题
    但是动态的sql语句就不行了

    String tmp1=request.getParameter("search");
    String tmp2=request.getParameter("select");
    String sql1= "select 书目控制号, 题名,责任者,出版项 from bookctrl where 书目控制号!=0 and "+tmp2+" like '%"+tmp1+"%'";
    因为每次翻页也要获取上一页的search和select,而PageView.jsp里面没有search和select变量,所以生成的sql语句不完全,当PageView.jsp?page=2时,返回空的ResultSet
      

  5.   

    谁直接在JSP中直接连接数据库,查询数据库,说明他太嫩。
      

  6.   

    你不会做几个JAVABEAN,几个工具类,然后引入使用么。代码简洁,安全,效率高。
      

  7.   

    yanbuhan(严寒)大哥,小弟确实很菜,请把你的高招亮出来让小弟见识一下。谢谢
      

  8.   

    xxyangwang(K歌之王) 例子挺好的,不过这样写不够简洁,
    将来修改很困难,要想一劳永逸,好要下工夫。可以这样考虑:
    一个PageControl类实现分页计算
    一个JAVABEAN(值对象)保存查询结果,"使用"或"继承"PageControl
    一个xml文件保存JAVABEN的结构,如字段名称、类型、中文名称,显示的列宽度等等
    一个xls文件显示xml文件和javabean的数据
    一个XmlTransformer处理转换过程
    一个标签类在jsp页面中用来显示分页数据这样将来只要修改xml文件,就能实现动态查询结果的分页。
    另外还要考虑是一次取回所有满足条件的数据,还是分页取回单页的数据,
    不管哪种情况,只要再扩展上面javabean就可以了
      

  9.   

    oracle: select * from tab where rownum<20 minus select * from tab where rownum <10
      

  10.   

    楼上的查询效率很低,不是我说的,以前见过的很多帖子都这样说,但也没有看到什么公认效率最高的SQL~
      

  11.   

    以上几位的方法让我受益非浅
    特别是xujiaqiang() 的方法
    我这里有个方法
    <jsp:useBean id="DB" class="Beanes.datacon" scope="page" />
    <%
    int intPageSize; //一页显示的记录数
    int intRowCount; //记录总
    int intPageCount; //总页
    int intPage; //待显示页码
    String strPage;
    int j;
    intPageSize = 10;//设置一页显示的记录数
    strPage = request.getParameter("page");//取得待显示页码
    if(strPage==null)
    {//表明在QueryString中没有page这一个参数,此时显示第一页数据
      intPage = 1;
    }
    else
    {
      //将字符串转换成整型;
      intPage = java.lang.Integer.parseInt(strPage);
      if(intPage<1) intPage = 1;
     }
     
    int  i=0;
    String sqlcount="select count(*) from news where news_type='政务动态'";
    ResultSet rsCount=DB.executeQuery(sqlcount);
    if (rsCount.next())
    {
    i= rsCount.getInt(1);;}
    rsCount.close();
    intRowCount=i;
    intPageCount = (intRowCount+intPageSize-1) / intPageSize;//记算总页数
    //调整待显示的页码
    if(intPage>intPageCount) intPage = intPageCount;
    %>
    <table width="90%" border="0" bgcolor="#F7f7e7">
                            <tr bgcolor="e2eaca"> 
                              <td colspan="2" bgcolor="e2eaca" height="26"> <div align="center" class="more">名 
                                  称</div></td>
                              <td width="30%" height="26"> <div align="center" class="more">发布日期</div></td>
                            </tr>
     <%
     int rownum=10;
    ResultSet Rs=DB.executeQuery("select news_id,news_title,news_date from news where news_type='政务动态' order by news_id desc");
    String news_id="",news_title="",news_date="";
    Rs.next();
        if(intPageCount>0)
        {
           //将记录指针定位到待显示页的第一条记录上
           Rs.absolute((intPage-1) * intPageSize+1);
           //显示数据
           j = 0;
           while(j<(intPageSize) && !Rs.isAfterLast())
           {
    news_id=Rs.getString("news_id");
    news_title=Rs.getString("news_title");
    news_date=Rs.getString("news_date");
    rownum--;
    %>
                            <tr> 
                              <td width="5%"> <div align="center"><img src="image/xj_news_p.gif" width="2" height="2"></div></td>
                              <td width="65%" class="text"><a href="zwdt_desc.jsp?news_id=<%=news_id%>"><%=news_title%></a></td>
                              <td class="text"> <div align="center"><%=news_date.substring(0,10)%></div></td>
                            </tr>
                       <%
        j++;
     Rs.next();
    }
    }
    Rs.close();
     for(int iflag=0;iflag<rownum;iflag++){
      %>
                            <tr> 
                              <td width="5%"> <div align="center"><img src="image/xj_news_p.gif" width="2" height="2"></div></td>
                              <td width="65%" class="text">&nbsp;</td>
                              <td class="text"> <div align="center">&nbsp;</div></td>
                            </tr>
                            <%}%>
               
                            <tr> 
                              <td colspan="3"><div align="right" class="more">第<%=intPage%>页&nbsp;&nbsp;共<%=intPageCount%>页&nbsp;&nbsp; 
                                  <%if(intPage<intPageCount){%>
                                  <a href="zwdt.jsp?page=<%=intPage+1%>">下一页</a> 
                                  <%}%>
                                  &nbsp; &nbsp; 
                                  <%if(intPage>1){%>
                                  <a href="zwdt.jsp?page=<%=intPage-1%>">上一页</a> 
                                  <%}%>
                                </div></td>
                            </tr>
                       
                          </table>
    datacon.java是
    package Beanes;import java.sql.*;
    public class datacon 
    {
    String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
      String ConnStr = "jdbc:odbc:nxlt";
        String UserName = "sa";
        String UserPassword = "";
        Connection conn = null;
        ResultSet rs = null;
        Statement stmt = null;
       public datacon()
        {
         try {
          Class.forName(DBDriver);
         
             }catch(java.lang.ClassNotFoundException e)
             {
          System.err.println("数据库驱动程序加载错误:" + e.getMessage());
             }
         }
        public ResultSet executeQuery(String sql)
        {
         rs = null;
         try{
             conn = DriverManager.getConnection(ConnStr,UserName,UserPassword);
        
             stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
             rs = stmt.executeQuery(sql);
            }catch(SQLException ex){
         System.err.println("数据库检索错误: " + ex.getMessage());
                   }
         return rs;
        }
        public boolean executeUpdate(String sql)
        {
         boolean bupdate=false;
         rs = null;
         try {
         conn = DriverManager.getConnection(ConnStr,UserName,UserPassword);
         stmt = conn.createStatement();
         int rowCount = stmt.executeUpdate(sql);
        
         if(rowCount!=0)bupdate=true;
         stmt.close();
             conn.close();
             }
             catch(SQLException ex) 
             {
              System.err.println("数据库更新出错:" + ex.getMessage());
             }
             return bupdate;
         }
         public boolean executeSP(String sql)
         {
          boolean pupdate=false;
          try{
              conn=DriverManager.getConnection(ConnStr,UserName,UserPassword);
              CallableStatement stm=conn.prepareCall("{call "+sql+"}");
              //stm.setString(1,strdate);
              int rowNum=stm.executeUpdate();
              if (rowNum!=0) pupdate=true;
              stm.close();
              conn.close();         
             }
             catch(SQLException ex)
             {
              System.err.println("数据库更新错误"+ex.getMessage());
             }
             return pupdate;
         }
         
         public boolean closeConn() {
          try {
          if (rs!=null)
              rs.close();
          if (stmt!=null)
              stmt.close();
          if (conn!=null)
              conn.close();
          return true;
          }catch (SQLException ex){
              return false;
          }
         }
        
       
    }  
      

  12.   

    重要的是思想:分页实现的思想是显示第n页时,就把指针移动到第n*m个记录(m是每页显示记录的条数),然后开始显示m条记录或者实际剩下的记录(<m)
      

  13.   

    这是我用的分页,大家看看,<%@ page contentType="text/html;charset=gb2312" %>
    <%@ page import="com.schoolwx.util.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="java.math.BigInteger.*" %>
    <jsp:useBean id="getArt" scope="request" class="com.schoolwx.util.articleManager" />
    <%if(session.getAttribute("userName")==null)response.sendRedirect("../errMsg.jsp?err=1");%>
    <HTML>
    <HEAD>
    <TITLE>校园原创文学网</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
    <link rel="stylesheet" href="../css/web.css" type="text/css">
    </HEAD>
    <BODY BGCOLOR=#FFFFFF leftmargin="0" topmargin="0" background="../images/bg.gif">
    <jsp:include page="top.jsp" flush="true"/>
    <%
    String author=(String)session.getAttribute("userName");
    //articleManager getArt=new articleManager();
    //Vector artVectorList=getArt.getArticleList(" where author='"+author+"'");
    Vector artVectorList=getArt.getArticleList(" where art_fb=2");
    String pageStr=request.getParameter("pageId");
    int intPageSize=15; //一页显示的记录数
    int intRowCount=artVectorList.size(); //记录总数
    int intPageCount=intRowCount/intPageSize+1;
    if(intRowCount%intPageSize==0)intPageCount--; //总页数
    int intPage; //待显示页码
    if(pageStr==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
    intPage = 1;
    }else{//将字符串转换成整型
    try{
    intPage = java.lang.Integer.parseInt(pageStr);
    }catch(Exception e){
    intPage=1;
    }
    if(intPage<1||intPage>intPageCount) intPage = 1;
    }
    int fromCount=(intPage-1)*intPageSize;
    int toCount=0;
    if(intPage==intPageCount){
    toCount=intRowCount;
    }else{
    toCount=intPageSize*intPage;
    }
    //out.println(fromCount);
    //out.println(toCount);
    %>
    <table cellspacing=0 cellpadding=0 width=780 align=center bgcolor=#ffffff 
    border=0 height="482">
      <tbody> 
      <tr> 
        <td valign=top width="45" background="../images/14.gif"><img height=322 
          src="../images/9.gif" width=51> 
          
        </td>
        <td valign=top width="131"><jsp:include page="left.jsp" flush="true"/></td>
        <td valign=top width="604"> 
          <table cellspacing=0 cellpadding=0 width="100%" border=0>
            <tbody> 
            <tr> 
              <td height=25><img height=1 
                src="../images/dot.gif" 
            width=1></td>
            </tr>
            </tbody> 
          </table>
          <table width="520" border="0" cellpadding="0" cellspacing="0" align="center">
            <tr bgcolor="#89C86A"> 
              <td rowspan="2" width="93" height="18" align="center" bgcolor="#89C86A">我发表的文章</td>
              <td width="427" height="16" bgcolor="#FFFFFF" align="right">共有<%=intRowCount%>篇文章已发表 &nbsp;&nbsp;&nbsp;&nbsp;
              </td>
            </tr>
            <tr bgcolor="#89C86A"> 
              <td width="427" height="2"></td>
            </tr>
            <tr valign="top"> 
              <td colspan="2" height="415"> <br>
      <% 
      if(intRowCount==0){
      out.println("目前未发表任何文章!");
      }else{
      %>
                <table width="500" border="0" cellspacing="2" cellpadding="0" align="center">
                  <tr align="center" bgcolor="#A5CB9A"> 
                    <td width="233" height="15">标题</td>
                    <td width="49" height="15">类型</td>
                    <td width="46" height="15">阅读</td>
                    <td width="35" height="15">评论</td>
                    <td width="125" height="15">发表时间</td>
                  </tr>
                  <%
      for(int i=fromCount;i<toCount;i++){
      article art=(article)artVectorList.get(i);
      out.println("<tr ");
      if((i+intPage-1)%2==0)
      out.println("bgcolor=\"#C6F6DC\"");
      else
      out.println("bgcolor=\"#eaf9f9\"");
      out.println("height=\"15\">");
     out.println("<td ><A HREF=\"../article/viewart.jsp?art_id="+art.getArtID()+"\" target=_blank>"+art.getArtTitle()+"</A></td>");
       out.println("<td align=center>"+art.getArtType()+"</td>");
      out.println("<td align=center>"+art.getArtReadTime()+"次</td>");
      out.println("<td  align=center>");
      if(art.getArtCanPn()==1)out.println("允许");
      out.println("</td>");
      out.println("<td  >"+art.getArtFbTime()+"</td>");
      out.println("</tr>");   
      }
      %>
                  <tr bgcolor="#FFFFFF" align="right"> 
                    <td colspan="5" height="15">共<%=intPageCount%>页,第<%=intPage%>页,
    <%
    if(intPage==1)out.print("上一页,");
    else
    out.print("<a href=\"?pageId="+(intPage-1)+"\">上一页</a>,");
    if(intPage==intPageCount)out.print("下一页");
    else
    out.println("<a href=\"?pageId="+(intPage+1)+"\">下一页</a>");
    %>  
                    </td>
                  </tr>
                </table>
    <%}//if(intRowCount==0) %>
              </td>
            </tr>
          </table>
        </td>
      </tr>
      </tbody> 
    </table>
    <TABLE cellSpacing=0 cellPadding=0 width=776 align=center border=0>
      <TBODY>
      <TR bgColor=#89c86a>
        <TD height=5><IMG height=3 
          src="../images/dot.gif" 
    width=19></TD></TR></TBODY></TABLE>
    <jsp:include page="button.jsp" flush="true"/>
    <script language="JavaScript">
    <!--
    function innfrom(a){
    if(a==2)
    document.all("from").innerHTML="&nbsp;摘自:<input type=\"text\" name=\"zzfrom\" size=\"20\" maxlength=\"30\" class=\"put\"><font  color=red>*</font>";
    else
        document.all("from").innerHTML="";
    }
    //-->
    </script>
    </BODY>
    </HTML>