本来页面显示的效果大致如下: 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>
如果象这里的方法封装结果集 实现起来很容易 而且可以更灵活
http://www.blogjava.net/jfy3d/archive/2005/05/12/4185.html
弄成两列显示。
你需要加上对rst.getString(1)得到的值进行判断
如果为空或者null则把表格的值赋为
否则就得到值
rs.getString(8)
rs.getString(1)
rs.getString(9)
这个逻辑就有问题。根本rs指针不叠加
<tr>
<td>
<table1></table1>
</td>
<td>
<table2></table2>
</td>
</tr>
</table>
这样还用什么指针回滚么?只要把两半rs取出来放好就可以了,如果不考虑什么翻页啥的
table>
<tr>
<td>
<table1>rs1循环</table1>
</td>
<td>
<table2>rs2循环</table2>
</td>
</tr>
</table>
这样还用什么指针回滚么?只要把两半rs取出来放好就可以了,如果不考虑什么翻页啥的这个比较简单
办法二:进行两次查询,然后进行输出。
<%@ 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> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<% }
%>
</table></td>
</tr>
</table>
</body>
</html>
顶多三个表格就可以不要直接用ResultSet限制太大
给的表格参考参考呀
你的代码好像有问题呀!我的测试如下:
<%@ 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>
{
((Map)list.get(i)).get("username");
}
右边列放一个表格
for(for(int i=9;i<list.size();i++)
{
((Map)list.get(i)).get("username");
}完事
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>
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()....}
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的控制要取消,只需要遍历到记录的末端就行,这两点改动后应该不会有问题的
<%@ 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> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<%
}
%>
</table></td>
</tr>
</table>
<%
rs.close();
con.close();
}
}catch(Exception e){out.print(e);};%>
</body>
</html>
<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> </td> // null
<td> </td> // null
<%return;}%></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>