JSP想将从数据库取出的记录的各列进行相同的处理,可以用循环么?列名无规律
如果一个表有很多字段(列),比如几十个吧,如果想对每列进行相同的处理,每次都把基本相同的代码(仅列名参数不同)写几十次,太麻烦而不和谐了。如想把它们显示在表中,光<td>...
如果一个表有很多字段(列),比如几十个吧,如果想对每列进行相同的处理,每次都把基本相同的代码(仅列名参数不同)写几十次,太麻烦而不和谐了。
如想把它们显示在表中,光
<td><%=rs.getXXX("列名1")%></td>模样的语句就得写几十个。
列名又毫无规律。
请问有没有什么方法能得到每列的索引号,使查找列不用列名而用递增的数字,这样就可以将处理语句写进循环啦。
好吧,有现成的API…… 展开
如想把它们显示在表中,光
<td><%=rs.getXXX("列名1")%></td>模样的语句就得写几十个。
列名又毫无规律。
请问有没有什么方法能得到每列的索引号,使查找列不用列名而用递增的数字,这样就可以将处理语句写进循环啦。
好吧,有现成的API…… 展开
5个回答
展开全部
数据库列可封装成list,这时候不用激励索引号,然后jsp中利用el表达式和核心标签库core,直接将list遍历出来,遍历时候可以获取索引:
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
。。。。
<body>
<%
List list = new ArrayList();
list.add("test1");
list.add("test2");
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="dataRecord" varStatus="dataIndex">//遍历list,var代表一个记录
<c:out value="${userStatus.count}"></c:out>//列索引
</c:forEach>
</body>
${dataIndex.count}就是那个索引,表格展示的时候用这个就可以了。
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
。。。。
<body>
<%
List list = new ArrayList();
list.add("test1");
list.add("test2");
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="dataRecord" varStatus="dataIndex">//遍历list,var代表一个记录
<c:out value="${userStatus.count}"></c:out>//列索引
</c:forEach>
</body>
${dataIndex.count}就是那个索引,表格展示的时候用这个就可以了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如下
/**
* 没有写链接
* 异常捕获
*/
//注意:这里的字段顺序,就是显示时候的顺序
//如果写 select *,那么顺序就是数据库里面的顺序
String sql = "select id,name,sex,age,address from table";
Connection conn = null; //假设这里已经去到链接
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
int columnCount = rs.getMetaData().getColumnCount();
String[] date = new String[columnCount];
List<String[]> list = new ArrayList<String[]>();
while(rs.next()){
for(int i = 0; i < date.length; i++){
date[i] = rs.getString(i+1);
}
list.add(date);
}
//数据库链接关闭
list 里面放的是行,date里面放的是列
在jsp里面写一个双重循环就应该是你要的结果了。
/**
* 没有写链接
* 异常捕获
*/
//注意:这里的字段顺序,就是显示时候的顺序
//如果写 select *,那么顺序就是数据库里面的顺序
String sql = "select id,name,sex,age,address from table";
Connection conn = null; //假设这里已经去到链接
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
int columnCount = rs.getMetaData().getColumnCount();
String[] date = new String[columnCount];
List<String[]> list = new ArrayList<String[]>();
while(rs.next()){
for(int i = 0; i < date.length; i++){
date[i] = rs.getString(i+1);
}
list.add(date);
}
//数据库链接关闭
list 里面放的是行,date里面放的是列
在jsp里面写一个双重循环就应该是你要的结果了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接用while(rs.next()),然后不要用列名,直接用rs.getxx(1),具体啥方法不太记得了,不过你写点的时候应该能提示出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体方法我记不清了,好像是rs.getMetaData() .getColumnCount(),取得有多少列。然后遍历就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
rs.get(i),i是索引。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询