Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

afficher plusieurs enregistrements à l'aide d'un jeu de résultats

Créez d'abord une classe Javabean qui représente une ligne de la table. Je n'ai aucune idée de quelles données vous parlez, mais prenons un User comme exemple du monde réel :

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

Ce qui précède est bien sûr un exemple. Vous devez nommer la classe et les propriétés en fonction de ce que les données réelles représentent.

Créez maintenant une classe DAO qui effectue la tâche d'interaction de base de données souhaitée à l'aide de JDBC. Vous devez seulement vous assurer que vous avez le bon pilote SQL Server JDBC dans le chemin de classe. Je peux recommander jTDS pour cela car il est bien meilleur et plus rapide que les propres pilotes JDBC de Microsoft. OK, supposons que vous vouliez lister tous les User s qui ont le même 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;
}

Créez maintenant une classe Servlet UsersServlet qui fait le prétraitement des données dans le doGet() méthode.

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

Mappez ce servlet dans web.xml comme suit :

    <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>

Notez le <url-pattern> , vous pouvez exécuter cette servlet par http://example.com/context/users .

Créez maintenant un fichier JSP users.jsp que vous placez dans WEB-INF dossier afin que personne ne puisse y accéder directement sans utiliser le servlet. Vous pouvez utiliser JSTL c:forEach itérer sur une 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>

Exécutez-le par http://example.com/context/users . Ça devrait être ça.