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

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

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

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

Java

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

Q&A

解決済

1回答

1507閲覧

Javaでテキストフィールドに入力した値をMySQLから該当する値を表示させたいです。

kawawaki

総合スコア10

MySQL

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

Java

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

0グッド

0クリップ

投稿2019/07/08 02:12

編集2019/07/08 02:27

前提・実現したいこと

Javaで電話帳のようなシステムを作っています。
MySQLに接続し該当する値を検索し表示させる機能を実装したいのですが、テーブル内の先頭行しか表示されません。

私の中では、テキストフィールド内の値とデータベースで該当する値が同じになるまで、ループをする考え方なのですが、
あっていますか?

該当のソースコード

Java

1class denwa extends JFrame implements ActionListener 2{ 3 private JPanel p1; 4 private JLabel GL_NAME; 5 private JLabel GL_NAMENUMBER; 6 private JTextField GF_NAME; 7 private JTextField GF_GNAME; 8 private JTextField GF_GNUMBER; 9 private JButton B_SEARCH; 10 private JButton B_RESEARCH; 11 private JButton B_EXIT; 12 private JTextArea Ta_MSG; 13 private JFrame frame; 14 ResultSet rsi; 15 Connection con = null; 16 private static String name1; 17 private static String name2; 18 private static String hira1; 19 private static String hira2; 20 private static int number; 21 private static String x; 22 private static String y; 23 24 public static void main(String args[]) 25 { 26 denwa frame = new denwa("☆☆☆ 電話帳検索 ☆☆☆"); 27 frame.setVisible(true); 28 29 30 } 31 32 33 denwa(String title) 34 { 35 setTitle(title); 36 setSize( 300, 150); 37 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 38 39 p1 = new JPanel(); 40 p1.setLayout(null); 41 p1.setBackground(Color.GREEN); 42 43 44 45 GL_NAME = new JLabel("氏名"); 46 GL_NAME.setSize(80,25); 47 GL_NAME.setLocation(10,40); 48 p1.add(GL_NAME); 49 50 GF_NAME = new JTextField(); 51 GF_NAME.setSize(110,20); 52 GF_NAME.setLocation(65,43); 53 GF_NAME.setHorizontalAlignment(JTextField.LEFT); 54 p1.add(GF_NAME); 55 56 57 58 59 GL_NAMENUMBER = new JLabel("名前・内線番号"); 60 GL_NAMENUMBER.setSize(150,25); 61 GL_NAMENUMBER.setLocation(10,150); 62 p1.add(GL_NAMENUMBER); 63 64 65 GF_GNAME = new JTextField(); 66 GF_GNAME.setSize(80,20); 67 GF_GNAME.setLocation(150,153); 68 GF_GNAME.setHorizontalAlignment(JTextField.RIGHT); 69 p1.add(GF_GNAME); 70 71 GF_GNUMBER = new JTextField(); 72 GF_GNUMBER.setSize(80,20); 73 GF_GNUMBER.setLocation(250,153); 74 GF_GNUMBER.setHorizontalAlignment(JTextField.RIGHT); 75 p1.add(GF_GNUMBER); 76 77 B_SEARCH = new JButton("検 索"); 78 B_SEARCH.setSize(80,25); 79 B_SEARCH.setLocation(55,250); 80 p1.add(B_SEARCH); 81 B_SEARCH.addActionListener(this); //アクション定義後、コメント解除 82 83 B_RESEARCH = new JButton("再検索"); 84 B_RESEARCH.setSize(80,25); 85 B_RESEARCH.setLocation(155,250); 86 p1.add(B_RESEARCH); 87 B_RESEARCH.addActionListener(this); //アクション定義後、コメント解除 88 89 90 B_EXIT = new JButton("終 了"); 91 B_EXIT.setSize(80,25); 92 B_EXIT.setLocation(500,250); 93 p1.add(B_EXIT); 94 B_EXIT.addActionListener(this); //アクション定義後、コメント解除 95 96 Ta_MSG = new JTextArea(); 97 Ta_MSG.setSize(500,100); 98 Ta_MSG.setLocation(55,300); 99 //Ta_MSG.setHorizontalAlignment(JTextField.RIGHT); 100 p1.add(Ta_MSG); 101 102 103 104 105 add(p1); 106 setSize(690, 450); 107 108 } 109 110 public void actionPerformed(ActionEvent event) 111 { 112 try 113 { 114 //JDBCドライバのロード 115 Class.forName("com.mysql.jdbc.Driver").newInstance(); 116 //MySQLに接続 117 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/denwa","root","password"); 118 System.out.println("接続成功。"); 119 //ステートメント作成 120 //レコード表示 121 122 Statement stmt = con. createStatement(); 123 String sql = "SELECT * FROM denwatyou"; 124 rsi = stmt.executeQuery(sql); 125 126 127 128 if(event.getSource() == B_SEARCH) 129 { 130 try 131 { 132 133 134 if(rsi.next()) 135 { 136 name1 = rsi.getString("id_name1"); 137 name2 = rsi.getString("id_name2"); 138 hira1 = rsi.getString("id_hira1"); 139 hira2 = rsi.getString("id_hira2"); 140 number = rsi.getInt("nomber"); 141 System.out.println("名前:"+name1+" "+name2+" 内線:"+number); 142 } 143 144 } 145 146 147 148 catch(NumberFormatException | SQLException e) 149 { 150 151 } 152 } 153 154 155 156 157 if(event.getSource() == B_RESEARCH) 158 { 159 try 160 { 161 162 } 163 catch(NumberFormatException e) 164 { 165 } 166 } 167 if(event.getSource() == B_EXIT) 168 { 169 System.exit(0); 170 frame.dispose(); 171 172 } } 173 174 175 catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) 176 { 177 System.out.println(e); 178 System.out.println("JDBCドライバのロードに失敗しました。"); 179 } 180 catch (SQLException e) 181 { 182 System.out.println(e); 183 System.out.println("MySQLに接続できませんでした。"); 184 185 } 186 finally 187 { 188 if (con != null) 189 { 190 try 191 { 192 con.close(); 193 } 194 catch (SQLException e) 195 { 196 System.out.println("MySQLのクローズに失敗しました。"); 197 } 198 199 } 200 } 201 202 203 } 204

試したこと

GUIを使用していますので、結果をテキストフィールドに返したいです。

補足情報(FW/ツールのバージョンなど)

言語:Java
ツール:エクリプス

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

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

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

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

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

gentaro

2019/07/08 04:12

解決しているのなら「解決済み」にしておいてください。
guest

回答1

0

ベストアンサー

ループをする考え方なのですが、

あっていますか?

まず決めた仕様通りの結果が出ているのなら「あっている」のでは。

ただ、SQLにはWHERE句という仕組みがあるのでそちらを利用したほうがループの手間もなくなるのではと。

投稿2019/07/08 02:15

m.ts10806

総合スコア80850

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

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

kawawaki

2019/07/08 02:28

かしこまりました。 ありがとうございます
kawawaki

2019/07/11 23:18

返信遅くなり申し訳ありません。 String sql = "SELECT * FROM denwatyou"の文にwHERE句をつけて テキストフィールドに入力された値を変数に置き替えて該当するデータを取り出すことで解決しました。
m.ts10806

2019/07/11 23:59

ヒントになったようで何よりです
kawawaki

2019/07/12 07:56

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問