sql >> Database >  >> RDS >> Sqlserver

meerdere records weergeven met behulp van resultatenset

Maak eerst een Javabean-klasse die één rij van de tabel vertegenwoordigt. Ik heb geen idee over welke gegevens je het hebt, maar laten we een User . nemen als voorbeeld uit de echte wereld:

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

Bovenstaande is natuurlijk een voorbeeld. Je moet de klasse en de eigenschappen dienovereenkomstig een naam geven wat de feitelijke gegevens vertegenwoordigen.

Maak nu een DAO-klasse die de gewenste database-interactietaak uitvoert met behulp van JDBC. U hoeft er alleen voor te zorgen dat u het juiste SQL Server JDBC-stuurprogramma in het klassenpad hebt. Ik kan jTDS hiervoor aanbevelen, omdat het veel beter en sneller is dan de eigen JDBC-stuurprogramma's van Microsoft. OK, laten we aannemen dat je alle User . wilt weergeven s met dezelfde 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;
}

Maak nu een Servlet-klasse UsersServlet die de voorbewerking van de gegevens in de doGet() . doet methode.

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

Wijs deze servlet als volgt toe in 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>

Let op de <url-pattern> , kunt u deze servlet uitvoeren door http://example.com/context/users .

Maak nu een JSP-bestand users.jsp die u plaatst in WEB-INF map zodat niemand er direct toegang toe heeft zonder de servlet te gebruiken. U kunt JSTL c:forEach . gebruiken herhalen over een 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>

Voer het uit door http://example.com/context/users . Dat zou het moeten zijn.



  1. Gebruik van FLASHBACK in Oracle

  2. java.lang.IllegalStateException:kon rij 0, col -1 van CursorWindow niet lezen - Android sqlite-probleem

  3. Hoe de n-de rang in MySQL te vinden?

  4. tsql retourneert een tabel van een functie of winkelprocedure