Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

показване на множество записи чрез използване на набор от резултати

Първо създайте Javabean клас, който представлява един ред от таблицата. Нямам представа за какви данни говорите, но нека вземем User като пример от реалния свят:

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

Горното разбира се е пример. Трябва да наименувате съответно класа и свойствата какво представляват действителните данни.

Сега създайте DAO клас, който изпълнява желаната задача за взаимодействие с базата данни с помощта на JDBC. Трябва само да се уверите, че имате правилния JDBC драйвер на SQL Server в пътя към класа. Мога да препоръчам jTDS за това, тъй като е много по-добър и по-бърз от собствените JDBC драйвери на Microsoft. Добре, да приемем, че искате да изброите всички 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;
}

Сега създайте сервлет клас 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);
}

Картирайте този сървлет в 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 .

Сега създайте JSP файл users.jsp който поставяте в WEB-INF папка, така че никой да не може да има директен достъп до нея, без да използва сървлета. Можете да използвате 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql групирайте само по редове, които са в последователност

  2. MSSQL Грешка „Основният доставчик се провали при отваряне“

  3. Низови функции на SQL Server (пълен списък)

  4. Atomic UPSERT в SQL Server 2005

  5. Автоматично изтриване на забравени транзакции в MS SQL Server