本来页面显示的效果大致如下: id=0 姓名:aaa   年龄:20   地址:北京市
id=1 姓名:bbb   年龄:18   地址:天津市
id=2 姓名:ccc   年龄:20   地址:安徽省
id=3 姓名:ddd   年龄:45   地址:广东省
id=4 姓名:eee   年龄:74   地址:北京市
id=5 姓名:fff   年龄:63   地址:北京市
id=6 姓名:ggg   年龄:21   地址:上海市
id=7 姓名:hhh   年龄:18   地址:重庆市
id=8 姓名:iii   年龄:24   地址:浙江省
id=9 姓名:jjj   年龄:35   地址:北京市
id=10 姓名:kkk   年龄:66   地址:北京市
id=11 姓名:lll   年龄:98   地址:厦门
id=12 姓名:mmm   年龄:22   地址:北京市
id=13 姓名:nnn   年龄:12   地址:陕西省
id=14 姓名:ooo   年龄:34   地址:河南省
...
现在想显示如下效果:
id=0 姓名:aaa   年龄:20   地址:北京市 id=8 姓名:iii   年龄:24   地址:浙江省
id=1 姓名:bbb   年龄:18   地址:天津市 id=9 姓名:jjj   年龄:35   地址:北京市
id=2 姓名:ccc   年龄:20   地址:安徽省 id=10 姓名:kkk   年龄:66   地址:北京市
id=3 姓名:ddd   年龄:45   地址:广东省 id=11 姓名:lll   年龄:98   地址:厦门
id=4 姓名:eee   年龄:74   地址:北京市 id=12 姓名:mmm   年龄:22   地址:北京市
id=5 姓名:fff   年龄:63   地址:北京市 id=13 姓名:nnn   年龄:12   地址:陕西省
id=6 姓名:ggg   年龄:21   地址:上海市 id=14 姓名:ooo   年龄:34   地址:河南省
id=7 姓名:hhh   年龄:18   地址:重庆市 ...(就是把同一个记录集分成两竖显示在一个页面中...)我的思路大致如下:<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="0">
  
  <tr>    <td>
<table>
  <tr>
    <td><%=rst.getString(0)%></td>
    <td><%=rst.getString(0)%></td>
    <td><%=rst.getString(0)%></td>
    <td><%=rst.getString(0)%></td>
  </tr>
</table>
    </td>

    <td>
<table>
  <tr>
    <td><%=rst.getString(8)%></td>
    <td><%=rst.getString(8)%></td>
    <td><%=rst.getString(8)%></td>
    <td><%=rst.getString(8)%></td>
  </tr>
</table>
    </td>  </tr>  <tr>    <td>
<table>
  <tr>
    <td><%=rst.getString(1)%></td>
    <td><%=rst.getString(1)%></td>
    <td><%=rst.getString(1)%></td>
    <td><%=rst.getString(1)%></td>
  </tr>
</table>
    </td>

    <td>
<table>
  <tr>
    <td><%=rst.getString(9)%></td>
    <td><%=rst.getString(9)%></td>
    <td><%=rst.getString(9)%></td>
    <td><%=rst.getString(9)%></td>
  </tr>
</table>
    </td>
  ...
  ...
  ...
  </tr>
</table>

解决方案 »

  1.   


    如果象这里的方法封装结果集 实现起来很容易  而且可以更灵活
    http://www.blogjava.net/jfy3d/archive/2005/05/12/4185.html
      

  2.   

    rs要可回滚的,然后rs.get(i),if(i+length<max){rs.get(i+length)}一行
      

  3.   

    直接用do....loop循环就可以了吧?
    弄成两列显示。
      

  4.   

    我本人意见是楼主   你在上面代码里没写循环啊!需要写上!   然后主要你可能会遇到表格小时不全的问题
       
       你需要加上对rst.getString(1)得到的值进行判断
       
       如果为空或者null则把表格的值赋为&nbsp;
       否则就得到值
      

  5.   

    rs.getString(0)
    rs.getString(8)
    rs.getString(1)
    rs.getString(9)
    这个逻辑就有问题。根本rs指针不叠加
      

  6.   

    <table>
        <tr>
            <td>
                 <table1></table1>
           </td>
           <td>
                 <table2></table2>
           </td>
        </tr>
    </table>
    这样还用什么指针回滚么?只要把两半rs取出来放好就可以了,如果不考虑什么翻页啥的
      

  7.   

    查两次   rs1是1-7  rs2是8-14
    table>
        <tr>
            <td>
                 <table1>rs1循环</table1>
           </td>
           <td>
                 <table2>rs2循环</table2>
           </td>
        </tr>
    </table>
    这样还用什么指针回滚么?只要把两半rs取出来放好就可以了,如果不考虑什么翻页啥的这个比较简单
      

  8.   

    办法一:先使用其他数据类型对RST进行存储,然后使用一定的算法取数据。
    办法二:进行两次查询,然后进行输出。
      

  9.   

    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*,com.codestudio.sql.*,com.zfl.data.*"%>
    <%@ include file="../system/checklogin.jsp"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head><body>
    <%
     Linkdb db=new Linkdb();
     ResultSet rs=null;
     sql="select * from mydb" 
     rs=db.executeQuery(sql);
     int recordNum=0;
     while (rs.next()) recordNum++;
    %>
    <table width="100%" border="0">
      <tr>
        <td width="50%"><table width="100%" height="40" border="0">
          <tr>
            <td width="76" height="18">          ID</td>
            <td width="76">姓名</td>
            <td width="111">年龄</td>
            <td width="208">地址</td>
          </tr>
    <%
           rs.beforeFirst();
          int n=(recordNum+1)/2;
      int i=0;
        while(rs.next()&&i<n)
    %>   
          <tr>
            <td><% if (rs.getString(0)!=null) out.println(rs.getString(0));else out.println("");%></td>
            <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
            <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
            <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
          </tr>
     <%
       i=i+1;
     }
     %>
        </table></td>
        <td width="50%"><table width="100%" border="0">
          <tr>
            <td width="67">ID</td>
            <td width="90">姓名</td>
            <td width="115">年龄</td>
            <td width="200">地址</td>
          </tr>
    <%
          while(rs.next()&&i<n)
    {
    %>  
          <tr>
            <td><% if (rs.getString(0)!=null) out.println(rs.getString(0));else out.println("");%></td>
            <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
            <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
            <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
          </tr>
    <%
    ;
    }
       if (recordNum%2!=0) 
       {
    %>   
           <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr> 
    <%   }
    %>
        </table></td>
      </tr>
    </table>
    </body>
    </html>
      

  10.   

    to:bluelily22(丁丁)现在就是将 rst 的放置问题
      

  11.   

    实现起来用的着这么复杂么 
    顶多三个表格就可以不要直接用ResultSet限制太大
      

  12.   

    to: jfy3d(剑事) 
    给的表格参考参考呀
      

  13.   

    To: djkhym(hym) 
    你的代码好像有问题呀!我的测试如下:
    <%@ page contentType="text/html;charset=GBK" language="java" %>
    <%@ page import="java.sql.*,java.util.*,java.io.*,com.zwqk.*" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>test</title>
    </head> <body>
    <%
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=zwqk"; String user = "sa";
    String password = ""; Connection conn = DriverManager.getConnection(url,user,password);
    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql = "select * from tblDhxx"; ResultSet rs = stmt.executeQuery(sql); int recordNum=0; while(rs.next())
    recordNum++;
    {
    %> <table width="100%" border="1">
    <tr> <td width="50%">
    <table width="100%" border="1">
    <tr>
    <td width="76" height="18">ID</td><td width="76">姓名</td><td width="111">年龄</td><td width="208">地址</td>
    </tr>
    <%
    rs.beforeFirst();
    int n=(recordNum+1)/2;
    int i=0;
    while(rs.next()&&i<n)
    {
    %>   
    <tr>
    <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
    <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
    <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
    <td><% if (rs.getString(4)!=null) out.println(rs.getString(4));else out.println("");%></td>
    </tr>
    <%
    i=i+1;
    }
    %>
    </table>
    </td> <td width="50%">
    <table width="100%" border="1">
    <tr>
    <td width="67">ID</td><td width="90">姓名</td><td width="115">年龄</td><td width="200">地址</td>
    </tr>
    <%
    while(rs.next()&&i<n)
    {
    %>  
    <tr>
    <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
    <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
    <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
    <td><% if (rs.getString(4)!=null) out.println(rs.getString(4));else out.println("");%></td>
    </tr>
    <%
    }
    if(recordNum%2!=0) 
    {
    %>   
    <tr>
    <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
    <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
    <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
    <td><% if (rs.getString(4)!=null) out.println(rs.getString(4));else out.println("");%></td>
    </tr>  <%
    }
    %>
    </table>
    </td> </tr>
    </table> <%
    }
    %> </body></html>
      

  14.   

    http://www.blogjava.net/jfy3d/archive/2005/05/12/4185.html看了这个自然就知道怎么做了
      

  15.   

    一个大表格分两列左边列放一个表格for(for(int i=0;i<9;i++)
    {
        ((Map)list.get(i)).get("username");
    }
    右边列放一个表格
    for(for(int i=9;i<list.size();i++)
    {
        ((Map)list.get(i)).get("username");
    }完事
      

  16.   

    可以打开 9换成 list.size()/2
      

  17.   

    不知道是不是楼住的意思,最好不要把rs写在页面里,先包装在List里面最好。如果比较懒,可以用jstl里面的Result。不知道大家是不是记得有个帖子问try中的代码过多,不能编译的帖子。我想就是这样造成的吧。你的jsp页面被编译为servlet以后,所有的标签都最为程序输出,所以你的try-catch-finally会非常庞大。close()一定要在finally里面完成。
    import javax.servlet.jsp.jstl.sql.*;
    Result data = ResultSupport.toResult(rs);//这样就封装好了,给懒人用的,挺好用。<table>
      开始循环
      <tr>
        <td>i的值</td>
        <td>i+1的值</td>
      </tr>
      结束循环
      <tr>
        <td colspan="2">分页</td>
      </tr>
    </table>
      

  18.   

    to 无所谓:刚才没有看完你的回贴,也是我的一时疏忽,后续循环中的&i<n条件控制去掉就行了,你的是不是左边表格有数据,右边表格没有数据,如果是的话,将后续循环 while(rs.next()&&i<n)改为while(rs.next())就行了,如果不是的话那问题可能出在别处,总体思路应该不会有错的.
      

  19.   

    思路:
    1、计算一下Collection(ArrayList或ResultSet)中有多少条记录(设为recordCount)
    2、设计记录表示用表格
    <table>
    <tr>
      <td>第一半</td>
      <td>第二半</td>
    <tr>
    </table>
    2、第一半的<td>中jsp代码:
    for(n=0;n<recordCount/2;n++)
    { out.print()....}
    第二半的<td>中jsp代码:
    for(n=recordCount/2;n<recordCount;n++)
    { out.print()....}
      

  20.   

    to:(无所谓);
      1.你的代码中可能有一处致使的错误:
      就是if(recordNum%2!=0) 
    {
    %>   
    <tr>
    <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
    <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
    <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
    <td><% if (rs.getString(4)!=null) out.println(rs.getString(4));else out.println("");%></td>
    </tr>  <%
    }
    %>
    此时记录集已经没有可用的数据了,需要补入空行,显示表格规整,好看,不然可能显示一些异常;2.最后一次的循环后对于i的控制要取消,只需要遍历到记录的末端就行,这两点改动后应该不会有问题的
      

  21.   

    帮人在帮自己,在学习的过程和解决问题的过程中也会提高,有一天我也会有很多问题求教你呢?因为我就是一个菜鸟,记不住东西,有时仅有一点思路。我启动了自己的tomcate5.0服务器试着用两种方式通过了,还存在一点问题那就是表头的汉字没有显示出来,显示的是乱码,相信这个问题不能难倒您。下面我贴出代码,注释部分使用另外一种访问数据的方式,现在使用的是一种访问ODBC桥的方式:
    <%@ page import="javax.naming.Context" %>
    <%@ page import="javax.sql.DataSource"%>
    <%@ page import="javax.naming.InitialContext"%>
    <%@ page import="java.sql.*"%><html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head><body>
    <%!%>
    <%
      DataSource ds = null;
     try{
     //方式一:使用应用程序的统一资源定位的方式来访问数据集,已经调试通过
      //Context initCtx = new InitialContext();
      //Context envCtx = (Context) initCtx.lookup("java:comp/env/");
      //ds = (DataSource)envCtx.lookup("jdbc/mis");
      //Connection con=(Connection)ds.getConnection();
      //Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
      //ResultSet rs=st.executeQuery("select   * from b202 order by id");
      //方式二:使用ODBC桥的方式来访问数据源
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection con=DriverManager.getConnection("jdbc:odbc:fdc","sa","hjjtmg530");
      Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
      ResultSet rs=st.executeQuery("select  top 50 * from djb_3 order by id"); int recordNum=0;
     while (rs.next()) recordNum++;
     rs.beforeFirst();
     {
    %>
    <table width="100%" border="0">
      <tr>
        <td width="50%"><table width="100%" height="40" border="0">
          <tr>
            <td width="76" height="18">          ID</td>
            <td width="76">姓名</td>
            <td width="111">年龄</td>
            <td width="208">地址</td>
          </tr>
    <%
    //       rs.beforeFirst();
       //   int n=(recordNum+1)/2;
      int i=0;
        while(rs.next()&&i<(recordNum+1)/2)
        {
    %>
          <tr>
            <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
            <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
            <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
            <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
          </tr>
     <%
       i=i+1;
         }
     %>
        </table></td>
        <td width="50%"><table width="100%" border="0">
          <tr>
            <td width="67">ID</td>
            <td width="90">姓名</td>
            <td width="115">年龄</td>
            <td width="200">地址</td>
          </tr>
    <%
          while(rs.next())
    {
    %>
          <tr>
            <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
            <td><% if (rs.getString(1)!=null) out.println(rs.getString(1));else out.println("");%></td>
            <td><% if (rs.getString(2)!=null) out.println(rs.getString(2));else out.println("");%></td>
            <td><% if (rs.getString(3)!=null) out.println(rs.getString(3));else out.println("");%></td>
          </tr>
    <%
    ;
    }
       if (recordNum%2!=0)
       {
    %>
           <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
    <%
       }
    %>
        </table></td>
      </tr>
    </table>
    <%
      rs.close();
      con.close();
     }
    }catch(Exception e){out.print(e);};%>
    </body>
    </html>
      

  22.   

    <%while(rs.next()) {%>
    <tr> <td><%=rs.get(1)%></td> // name
    <td><%=rs.get(2)%></td> // age <%if(rs.next()) {%>
    <td><%=rs.get(1)%></td> // name
    <td><%=rs.get(2)%></td> // age
    <%}else {%>
    <td>&nbsp;</td> // null
    <td>&nbsp;</td> // null
    <%return;}%></tr>
    <%}%>
      

  23.   

    <tr>
    <%while(rs.next() && rs.getRow()<=rs.size()/2) {%>
    <td>
    <table>
    <%=rs.get(1)%>
    <%=rs.get(2)%>
    </table>
    </td>
             <%}while(rs.next()) {%>
    <td>
    <table>
    <%=rs.get(1)%>
    <%=rs.get(2)%>
    </table>
    </td>
    <%}%>
    </tr>
      

  24.   

    to 无所谓:刚才没有看完你的回贴,也是我的一时疏忽,后续循环中的&i<n条件控制去掉就行了,你的是不是左边表格有数据,右边表格没有数据,如果是的话,将后续循环 while(rs.next()&&i<n)改为while(rs.next())就行了,如果不是的话那问题可能出在别处,总体思路应该不会有错的.