displaying multiple records by using resultset

前端 未结 2 1143
情话喂你
情话喂你 2020-11-30 14:53

how to display multiple records from database having the same field value by using result set statement

2条回答
  •  广开言路
    2020-11-30 15:23

    First create a Javabean class which represents one row of the table. I have no idea what data you're talking about, but let's take an User as real world example:

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

    The above is of course an example. You need to name the class and the properties accordingly what the actual data represents.

    Now create DAO class which does the desired database interaction task with help of JDBC. You only need to ensure that you have the correct SQL Server JDBC driver in the classpath. I can recommend jTDS for this as it is much better and faster than Microsoft's own JDBC drivers. OK, let's assume that you want to list all Users which have the same age:

    public List listByAge(Integer age) throws SQLException {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        List users = new ArrayList();
    
        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;
    }
    

    Now create a Servlet class UsersServlet which does the preprocessing of the data in the doGet() method.

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

    Map this servlet in web.xml as follows:

        
            users
            mypackage.UsersServlet
        
        
            users
            /users
        
    

    Note the , you can execute this servlet by http://example.com/context/users.

    Now create a JSP file users.jsp which you place in WEB-INF folder so that nobody can directly access it without using the servlet. You can use JSTL c:forEach to iterate over a List:

    
                
    IDNameAge
    ${user.id}${user.name}${user.age}

    Execute it by http://example.com/context/users. That should be it.

提交回复
热议问题