質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Q&A

解決済

1回答

880閲覧

javaでデータベースの値の一覧表示

ataru2222

総合スコア272

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

0グッド

0クリップ

投稿2020/02/12 16:11

編集2020/02/12 21:15

javaでデータベースの値の一覧表示のやり方について質問させてください。
現在TestDAOのsearchメソッドで値の取得をして、searchResult.jspにて表示をさせるプログラムを書いています。

TestDAOのsearchメソッドでのデータベースの検索
→likeを使って空欄検索をして全件取得する
→searchResult.jspにて表示させたい。

TestDAO.java

1 public List<Test> search(String name) throws NamingException, SQLException { 2 3 4 List<Test> list = new ArrayList<>(); 5 6 Connection con = null; 7 PreparedStatement st = null; 8 9 try { 10 11 // データベースに接続 12 con = getConnection(); 13 14 // SQL文を準備・実行 15 st = con.repareStatement("select * from Test where name like ?"); 16 st.setString(1, "%"+name+"%"); 17 ResultSet rs = st.executeQuery(); 18 19 // リターン用にインスタンスを準備 20 Test g = new Test(); 21 22 while (rs.next()) { 23 g.setId(rs.getInt("id")); 24 g.setName(rs.getString("name")); 25 g.setAddress(rs.getString("address")); 26 list.add(g); 27 28 29 30 } 31 32 } finally { 33 if (st != null) { 34 st.close(); 35 } 36 if (con != null) { 37 con.close(); 38 } 39 40 return list; 41 } 42

TestDAOを使ってこちらのコードsearchReslut.jspで値を表示させると
一覧結果ではなく、データベース上の最後に入っていた人のリストが
人数分並んでしまうのですが、一覧表示させたい場合は
TestDAOのsearchメソッドの中身はどのように書いたらよいでしょうか?

詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

イメージ説明

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

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

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

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

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

m.ts10806

2020/02/12 19:48

これは? st =![イメージ説明](1bb061e1ebe077c46a168b3b2c788f62.jpeg) 実際のコードにこんな記述入ってるんですか?
ataru2222

2020/02/12 21:16

すみません。 最後に画像を貼った時にくっついてしまっていたようです。 修正させていただきました。
guest

回答1

0

ベストアンサー

一覧結果ではなく、データベース上の最後に入っていた人のリストが

人数分並んでしまうのですが、

ひとつのTestクラスのインスタンスgを使いまわしてリストに追加しているからです。以下だと思います。

Java

1ResultSet rs = st.executeQuery(); 2 3// リターン用にインスタンスを準備 4// ここでインスタンスを生成するのではなく、 5// NG! Test g = new Test(); 6 7while (rs.next()) { 8 // いち要素ごとにインスタンスを準備 9 Test g = new Test(); 10 g.setId(rs.getInt("id")); 11 g.setName(rs.getString("name")); 12 g.setAddress(rs.getString("address")); 13 list.add(g); 14} 15

投稿2020/02/12 16:29

dodox86

総合スコア9256

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

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

ataru2222

2020/02/12 21:26

解答ありがとうございます。 ちなみにまとめて一覧表示する際のインスタンスの用意する書き方が分からない状態です。 検索結果がn件になるのでリスト全員分のインスタンスを用意する事もできないですし。 g(i).setID(getInt(“ID”)) i++ これはダメでしたが、このような書き方をするって事でしょうか?
退会済みユーザー

退会済みユーザー

2020/02/12 22:53

目の前(回答)にあるのにわからないとはこれは・・・
ataru2222

2020/02/12 22:56

すみません! 本当に気づきませんでした(汗) ご指摘ありがとうございました。
ataru2222

2020/02/12 22:59

ご回答していただきました、dodox86様、 サポートしていただきましたasahina1979様ありがとうございました。 日々精進していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問