sql >> データベース >  >> RDS >> Sqlserver

結果セットを使用して複数のレコードを表示する

    まず、テーブルの1行を表すJavabeanクラスを作成します。あなたが話しているデータがわかりませんが、Userを見てみましょう 実例として:

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

    上記はもちろん一例です。実際のデータが表すものに応じて、クラスとプロパティに名前を付ける必要があります。

    次に、JDBCを使用して目的のデータベース対話タスクを実行するDAOクラスを作成します。クラスパスに正しいSQLServerJDBCドライバーがあることを確認するだけで済みます。 jTDSは、Microsoft独自のJDBCドライバーよりもはるかに優れており、高速であるため、これをお勧めします。 OK、すべてのUserをリストしたいとします。 同じageを持つs :

    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. データベースを「正規化」するとはどういう意味ですか?

    2. SQL UPDATE

    3. MySQL match()against()-関連性と列で並べ替えますか?

    4. SQLケース:3つのあまり知られていない面倒を知って回避する