- - PR -
サーブレットでページング処理
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-09-19 09:30
サーブレットでDBに接続してJSPて表示するのですが、
良くある、10件表示したら、「次の10件」「前の10件」みたいなボタンで 出力を制御したいのです。 あっっちこっちHPみたのですが、あまり無くよくわかりません。 どなたか、教えていただけませんか。 宜しくお願いします。 | ||||
|
投稿日時: 2002-09-19 10:08
>良くある、10件表示したら、「次の10件」「前の10件」みたいなボタンで
>出力を制御したいのです。 ボタンからの入力がリクエストとしてサーバーに送られるので, あとはそれにあわせてServletなりJSPなりでページを 生成するだけだとおもいますが? #別にボタンが出力を制御するわけじゃない. | ||||
|
投稿日時: 2002-09-19 10:27
ありがとうございます。 ボタンが出力制御しない事はわかったのですが、 具体的にどのように書けばいいのかが解らないのです・・・ 参考になるHPとかありましたら、教えていただけませんか? | ||||
|
投稿日時: 2002-09-19 11:22
こんにちは。わらびです。
>具体的にどのように書けばいいのかが解らないのです・・・ >参考になるHPとかありましたら、教えていただけませんか? 参考となるHPは知りませんが、いろいろあると思います。 条件によっていろいろ使い分ければいいと思いますが, 1 SQLで制御する。 最初にDBの主キーだけ取ってきて,Iteratorなりに残しておいて, 表示件数に合わせて、WHERE句に入れる。 SELECT * FROM DB WHERE ID=1 OR ID=2 OR ID=3 OR ... OR ID=10 みたいなSQLをservletを作り、NEXTボタンが押された場合は 11〜20が入るようにする 2 DBの全フィールドを持ってきて,そのデータを持ったオブジェクトを Iterator等に入れて,出力する。 とりあえず、私が思いついたのはこんな感じですが,工夫次第で,いくらでも ロジックが組めると思います。 | ||||
|
投稿日時: 2002-09-19 13:07
わらびさん>
ありがとうございます。 先日もありがとうございました。 先日の件はできました。 そこで先日のPGにこのページング処理を追加しようと考えていたのです。 ********************************* 1 SQLで制御する。 最初にDBの主キーだけ取ってきて,Iteratorなりに残しておいて, 表示件数に合わせて、WHERE句に入れる。 SELECT * FROM DB WHERE ID=1 OR ID=2 OR ID=3 OR ... OR ID=10 ********************************** この部分はまず「所属」というものがあるんですけど、 それをキーにしてヒットするものをまず全部とってきますよ。 そして、10件なら10件をwhere句でまわすというう事なんですか? 宜しくお願いします。 | ||||
|
投稿日時: 2002-09-19 14:26
こんにちは。 たとえば、 String sql = "SELECT 所属 FROM TABLE"; connection = UtilApplication.getConnection(); statement = connection.createStatement(); resultset = statement.executeQuery(sql); Vector key = new Vector(); while(resultset.next()){ key.add(resultset.getString(1)); } int start = Integer.parseInt((String)request.getParameter("end")) + 1; int end = start + 10; request.setAttribute("end",new String(end)); StringBuffer query = new StringBuffer("SELECT * FROM TABLE WHERE "); query.append("所属=").append(key.get(start)); for(int i = start + 1;i < end;i++){ query.append(" OR 所属=").append(key.get(i)); } statement = connection.createStatement(); resultset = statement.executeQuery(query.toString()); こんな感じでしょうか。 即興なので,相当いいかげんですが,雰囲気だけでも。 | ||||
|
投稿日時: 2002-09-19 15:26
私が以前ページ処理を実装したときは、SQLでデータを取得する際に ソートをかけて、offsetとlimitを使用しました。 SQL> SELECT * FROM t_table LIMIT 10 OFFSET 20 ORDER BY hogehoge; といった感じで、任意のキーでソートしながらデータを得ます。 [追記] この時使用してたDBMSはPostgreSQLです。今、何気なく検索をかけたら http://www.orangesoft.co.jp/RDB/rdb_memo_misc.html にあるように、DBMSによって違うようですのでお気を付け下さい。 [ メッセージ編集済み 編集者: 永井和彦 編集日時 2002-09-19 15:33 ] | ||||
|
投稿日時: 2002-09-19 16:35
わらびさん>
ありがとうございます。 今わらびさんのおっしゃったとうりに書いているんですが、 一つ解らない点があります。よろしいでしょうか。。 ****************************** int start = Integer.parseInt((String)request.getParameter("end")) + 1 ↑ ****************************** 「矢印」の部分の「end」がよくわりません。 これはどういうことなんですか? 宜しくおねがいします。 [ メッセージ編集済み 編集者: りょうちん 編集日時 2002-09-19 16:36 ] [ メッセージ編集済み 編集者: りょうちん 編集日時 2002-09-19 16:36 ] |
1|2|3
次のページへ»