Получить и отобразить значения из ResultSet в определенном порядке - PullRequest
0 голосов
/ 26 сентября 2018

Я получаю записи из базы данных и отображаю их на странице 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 ]

0 голосов
/ 26 сентября 2018

Возможно, вам следует использовать таблицу здесь.Приведенный ниже скриптлет создает таблицу HTML шириной в три столбца, которая затем заполняется слева направо и сверху вниз.

<table colspan="3">
<% 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();

   int i = 0;
   while (rs.next()) {
       if (i > 0 && i % 3 == 0) {%>
</tr>
<%     }
       if (i % 3 == 0) {%>
<tr>
<%     }%>
<td> <% rs.getString("username") %> </td>
   <% ++i; } %>
</tr>
</table>

В качестве примечания, если вы хотите order имена пользователей приходят из вашей таблицы MySQL, тогда вам, вероятно, следует использовать предложение ORDER BY, например,

SELECT * FROM registration ORDER BY username;

В общем, нет никакого внутреннего порядка в таблице SQL, записи которой моделируются после неупорядоченных наборов.Текущий порядок, который вы видите, может измениться в какой-то момент, когда будут добавлены новые данные, поэтому использование предложения ORDER BY - хороший способ обеспечить согласованный вывод на вашей HTML-странице.

0 голосов
/ 26 сентября 2018

select * from registration order by id desc и использовать прямую итерацию.Кроме того, я бы предпочел rs.getString("username") вместо rs.getString(2), потому что кто-то может добавить столбец в таблицу в будущем (здесь, вероятно, было бы также лучше ограничить запрос до username).Вам не нужно было использовать Class.forName для регистрации вашего драйвера jdbc начиная с Java 6 (JDBC 4.0).Наконец, и к вашему вопросу, держите счетчик и добавляйте разрыв строки в каждой третьей строке.Мол,

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/eco", 
        "root", "vicky");
PreparedStatement ps = con.prepareStatement("select username from registration order by id desc");
ResultSet rs = ps.executeQuery();
int count = 0;
while (rs.next()) {
    if (++count % 3 == 0) {
        %><br /><%
    }
    %><%= rs.getString("username"); %> <%
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...