Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

hiển thị nhiều bản ghi bằng cách sử dụng tập kết quả

Đầu tiên, hãy tạo một lớp Javabean đại diện cho một hàng của bảng. Tôi không biết bạn đang nói về dữ liệu gì, nhưng hãy xem một User như ví dụ trong thế giới thực:

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

Ở trên tất nhiên là một ví dụ. Bạn cần đặt tên cho lớp và các thuộc tính tương ứng với những gì dữ liệu thực tế đại diện.

Bây giờ tạo lớp DAO thực hiện nhiệm vụ tương tác cơ sở dữ liệu mong muốn với sự trợ giúp của JDBC. Bạn chỉ cần đảm bảo rằng bạn có trình điều khiển SQL Server JDBC chính xác trong classpath. Tôi có thể đề xuất jTDS cho điều này vì nó tốt hơn và nhanh hơn nhiều so với trình điều khiển JDBC của Microsoft. OK, giả sử rằng bạn muốn liệt kê tất cả User s có cùng 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;
}

Bây giờ hãy tạo một lớp Servlet UsersServlet xử lý trước dữ liệu trong doGet() phương pháp.

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);
}

Ánh xạ servlet này trong web.xml như sau:

Người dùng
    <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>

Lưu ý <url-pattern> , bạn có thể thực thi servlet này bằng http://example.com/context/users .

Bây giờ, hãy tạo tệp JSP users.jsp mà bạn đặt trong WEB-INF thư mục để không ai có thể truy cập trực tiếp vào nó mà không cần sử dụng servlet. Bạn có thể sử dụng JSTL c:forEach để lặp qua 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>

Thực thi nó bằng http://example.com/context/users . Chắc là vậy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách viết lại IS DISTINCT FROM và IS NOT DISTINCT FROM?

  2. Cách RANK () hoạt động trong SQL Server

  3. Truy xuất dữ liệu từ quy trình được lưu trữ có nhiều bộ kết quả

  4. Tạo công việc đại lý máy chủ SQL bằng T-SQL

  5. Cách xác định tổng số kết nối đang mở / hoạt động trong ms sql server 2005