отображение нескольких записей с использованием результирующего набора - PullRequest
1 голос
/ 02 декабря 2009

как отобразить несколько записей из базы данных, имеющих одинаковое значение поля, с помощью оператора набора результатов

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Сначала создайте класс Javabean, который представляет одну строку таблицы. Я понятия не имею, о каких данных вы говорите, но давайте возьмем User в качестве реального примера:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // Add/generate public getters and setters.
}

Выше приведен пример. Вам необходимо дать имя классу и свойствам соответственно тому, что представляют собой фактические данные.

Теперь создайте класс DAO, который выполняет нужную задачу взаимодействия с базой данных с помощью JDBC . Вам нужно только убедиться, что у вас есть правильный драйвер JDBC для SQL Server в пути к классам. Я могу порекомендовать jTDS для этого, так как это намного лучше и быстрее, чем собственные драйверы JDBC от Microsoft. Хорошо, давайте предположим, что вы хотите перечислить все User с одинаковыми age:

public List<User> listByAge(Integer age) throws SQLException {
    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;
    List<User> users = new ArrayList<User>();

    try {
        connection = database.getConnection();
        statement = connection.prepareStatement("SELECT id, name, age FROM user WHERE age = ?");
        statement.setInt(1, age);
        resultSet = statement.executeQuery();
        while (resultSet.next()) {
            User user = new User();
            user.setId(resultSet.getLong("id"));
            user.setName(resultSet.getString("name"));
            user.setAge(resultSet.getInt("age"));
            users.add(user);
        }
    } finally {
        if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
    }

    return users;
}

Теперь создайте класс сервлета UsersServlet, который выполняет предварительную обработку данных в методе doGet().

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    List<User> users = userDAO.list();
    request.setAttribute("users", users);
    request.getRequestDispatcher("/WEB-INF/users.jsp").forward(request, response);
}

Отобразите этот сервлет в web.xml следующим образом:

    <servlet>
        <servlet-name>users</servlet-name>
        <servlet-class>mypackage.UsersServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>users</servlet-name>
        <url-pattern>/users</url-pattern>
    </servlet-mapping>

Обратите внимание на <url-pattern>, вы можете выполнить этот сервлет с помощью http://example.com/context/users.

Теперь создайте файл JSP users.jsp, который вы поместите в папку WEB-INF, чтобы никто не мог получить к нему прямой доступ без использования сервлета. Вы можете использовать JSTL c:forEach для итерации по List:

<table>
    <thead>
        <tr><th>ID</th><th>Name</th><th>Age</th></tr>
    </thead>
    <tbody>
        <c:forEach items="${users}" var="user">
            <tr><td>${user.id}</td><td>${user.name}</td><td>${user.age}</td></tr>
        </c:forEach>
    </tbody>
</table>

Выполнить его по http://example.com/context/users. Это должно быть.

0 голосов
/ 02 декабря 2009

Вам нужно создать POJO для хранения данных, полученных с помощью вашего запроса, а затем с помощью ResultSet вы можете перебирать каждую строку, полученную при выполнении запроса к БД.

Таким образом, вы получите список объектов (POJO). Это может быть использовано где угодно. http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html

http://www.planet -source-code.com / VB / скрипты / ShowCode.asp? TxtCodeId = 2691 & lngWId = 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...