🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

2回答

3713閲覧

入力画面から複数の項目を選択し、データベースから同時に取得する方法について

sylvia1na

総合スコア6

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2019/10/25 23:19

編集2019/10/26 07:59

入力画面で選択された複数の項目を、DBから同時に取得したいです。
よろしくお願いいたします。

### ポスグレを用いてDBを作成しました。テーブルの名前はmydbです。データベース

### 次は入力画面です。入力画面から編集したい項目を選択します。会員コードは恒常なので選択項目に含まれていません。
入力画面

そして、入力画面から複数の項目を同時に選択できるようにこういうふうにソースコード書きました。

### JSPのform文です。

<br><input type="checkbox" name="item" value="name">名前</br> <br><input type="checkbox" name="item" value="address">住所</br> <br><input type="checkbox" name="item" value="gender">性別</br> <br><input type="checkbox" name="item" value="birthday">誕生日</br> <br><input type="checkbox" name="item" value="birthplace">出身地</br> <br><input type="checkbox" name="item" value="hobby">趣味</br> コード

### サーブレットのソースコードです。

public

1 public viod doPost(HttpServletRequest req, HttpServletResponse res) 2 throws ServletException,IOException{ 3 String[]checekedItems = req.getParameterValues("item"); 4 System.out.println("checked item is"); 5 for(String item : checkedItems){ 6 System.out.println("[" + item + "]"); 7 } 8 } 9 } 10コード

**### **
ユーザーは入力画面でどの項目を選択するかわからないので、選択項目は変数「item」になってます。
ユーザーに選択された項目のみをDBから取得し、出力画面で表示してほしいです。

変数itemをDBから取得する方法をわからないです。例えば、ユーザーは生年月日と出身地を選択したらどうすれば変数itemをbirthdayとbirthplaceにしてDBから取り出すことができます?
よろしくお願いいたします。
**

**

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sylvia1na

2019/10/26 00:14

質問内容を直しました。よろしくお願いいたします。
guest

回答2

0

java

1String[] checekedItems = req.getParameterValues("item");

これでチェックボックスにて選択したname値がすべて取得できていますので、あとはこれを使ってSQLを組み立てると良いでしょう。テーブル名が書かれていませんので、仮に sample とすると、

SQL

1SELECT 2 選択した項目, 選択した項目, .... -- 選択した項目をカンマ区切りで作る 3FROM 4 sample

あとはPreparedStatement(ないしはStatement)を使って検索結果を取得します。

ただし、取得する項目(ないしはカラムによって型)が動的に変わるのでデータを取り出す処理が大変になることが予想されます。
SQLは項目を固定にして、画面に表示するJSPでチェックボックスで選択した項目だけ表示する処理にした方が、実装は簡単になるでしょう。

SQL

1SELECT * FROM sample

java

1PreparedStatement statement = db.prepareStatement("SELECT * FROM sample"); 2ResultSet resultSet = statement.executeQuery(); 3while (resultSet.next()) { 4 String name = resultSet.getString("name"); 5 string address = resultSet.getString("address"); 6 // 以降、項目の取得処理と、検索結果を保持する処理.... 7} 8rs.close(); 9st.close();

検索結果をJSPへ渡す処理は、「JSP フォワード」で検索するとさまざまな実装例が出てきます。

参考:
Postgresql公式:31.3. 問い合わせの発行と結果の処理
javadrive:データの取得(SELECT)

投稿2019/10/26 07:31

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sylvia1na

2019/10/27 06:33

ご回答、ありがとうございます。ユーザーは入力画面のチェックボックスからどの項目を選ぶか事前に予測できないので、選択された項目のみをデータベースから取り出す方法を知りたいですね。
A-pZ

2019/10/27 13:12

それは既に、SQL文のところに記載しています。
guest

0

同nameはひとつしか送信しないのでnameを個別にするか[]をつけて配列にしてください。

投稿2019/10/26 03:57

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問