我正在从数据库中检索记录并显示在jsp页面上,但是记录是逐行显示的,但是我想在一行中显示3条记录,第四条记录应该在下一行中显示。
我的jsp代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.sql.* "%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title></title>
</head>
<body>
<% Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/eco", "root", "vicky");
PreparedStatement ps = con.prepareStatement("select * from registration");
ResultSet rs=ps.executeQuery();
rs.afterLast();
while(rs.previous()){ %>
<p> <%= rs.getString(2) %> </p>
<%} %>
</body>
</html>
数据库结构:
ID username email password
1 vikas vikas5@gmail.com 44
2 Aravind Aravind@gmail.com 12
3 rakesh rakesh@gmail.com 123
4 chandra chnadra@gmail.com 123
5 shiva chinthala@gmail.com 12345
6 sai sai@gmail.com 4321
7 ravi ravi@gmail.com 987654
我的输出:
ravi
sai
shiva
chandra
rakesh
Aravind
vikas
但我希望输出为:
ravi sai shiva
chandra rakesh Aravind
vikas
2条答案
按热度按时间jvlzgdj91#
select * from registration order by id desc
使用正向迭代。另外,我更喜欢rs.getString("username")
结束rs.getString(2)
因为将来可能有人会向表中添加一列(在这里,最好将查询限制为username
以及)。你不需要使用Class.forName
从Java6(JDBC4.0)开始注册jdbc驱动程序。最后,对于你的问题,保留一个计数器,每隔三行添加一个换行符。比如,8wigbo562#
你应该在这里用一张table。下面的scriptlet构建了一个三列的html表,然后按从左到右和从上到下的顺序填充。
顺便说一句,如果您想对来自mysql表的用户名进行排序,那么您可能应该使用
ORDER BY
条款,例如。一般来说,sql表没有内部顺序,它的记录是以无序集为模型的。随着新数据的添加,您看到的当前顺序可能会在某个时候发生变化,因此使用
ORDER BY
子句是在html页面中保持一致输出的好方法。