使用结果集显示多个记录

时间:2009-12-02 06:42:21

标签: sql-server servlets jdbc

如何使用结果集语句

显示具有相同字段值的数据库中的多条记录

2 个答案:

答案 0 :(得分:2)

首先创建一个表示表的一行的Javabean类。我不知道你在谈论什么数据,但让我们以User作为现实世界的例子:

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

以上当然是一个例子。您需要根据实际数据的相应名称命名类和属性。

现在创建DAO类,在JDBC的帮助下完成所需的数据库交互任务。您只需要确保在类路径中具有正确的SQL Server JDBC驱动程序。我可以为此推荐jTDS,因为它比微软自己的JDBC驱动程序更好,更快。好的,我们假设您要列出具有相同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;
}

现在创建一个Servlet类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);
}

将此servlet映射到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执行此servlet。

现在创建一个放在users.jsp文件夹中的JSP文件WEB-INF,这样任何人都可以在不使用servlet的情况下直接访问它。您可以使用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执行。应该是它。

答案 1 :(得分:0)

您必须创建一个POJO来存储通过查询获得的数据,然后通过ResultSet迭代从DB Query执行获得的每一行。

因此,您将获得一个对象列表(POJO)。这可以在任何地方使用。 http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2