##初めに
現在、郵便番号のデータベースを用いて、住所を入力して、ヒットする結果を、全てGUI上に出力させようとしています。
##使用環境
windows10
NetBeans
PgAdmin4
Ubuntu
##現在の状態
検索結果が1件のみの場合、出力は1つでいいですが、複数ヒットした場合、全ての都道府県、市区町村、町名、郵便番号を出力させたいです。
現在、検索結果が1件の場合は正しく動作するのですが、複数ヒットした時、最後の1件のみが出力されてしまい、全てを出力することができていません。
##ソースコード(GUI部分)
Java
1Label label6 = new Label("郵便番号"); 2 HBox pane5=new HBox(label6); 3 pane5.setAlignment(Pos.CENTER); 4 5 Label pref = new Label(""); 6 Label city = new Label(""); 7 Label area= new Label(""); 8 Label zip=new Label(""); 9 HBox pane6=new HBox(30,pref,city,area,zip); 10 pane6.setAlignment(Pos.CENTER); 11 12 13 Button button2 = new Button("戻る"); 14 HBox pane8 = new HBox(button2); 15 pane8.setAlignment(Pos.CENTER); 16 17 VBox pane7 = new VBox(10,pane5,pane6,pane8); 18 pane7.setAlignment(Pos.TOP_CENTER); 19 Scene scene2 = new Scene(pane7,1000,1000);
##ソースコード(検索部分)
Java
1String sql = "SELECT * FROM zip WHERE pref='"+PREF+"' AND city='"+CITY+"'"; 2 Statement st = con.createStatement(); 3 ResultSet rs = st.executeQuery(sql); 4 while (rs.next()) { 5 pref.setText(rs.getString("pref")); 6 city.setText(rs.getString("city")); 7 area.setText(rs.getString("area")); 8 zip.setText(rs.getString("newzip")); 9 } 10 primaryStage.setScene(scene2);
##コードの解説(GUI部分)
実際は、検索画面のScene1と検索結果を出力するScene2の2つがあります。
ここでは、問題のScene2のみを貼らせて頂きます。
ここでは、Labelのpref,city,area,zipに、それぞれ検索結果の都道府県、市区町村、町名、郵便番号を格納して、出力しています。
##コードの解説(検索部分)
実行するsql文を指定し、whileの部分で、該当する住所のデータを、pref,city,area,zipにそれぞれ格納しています。
##やりたいこと
理想は、検索結果が10件の場合、
このwhileの部分でpref,city,area,zipのデータのセットが10セット作られて、GUIに出力したいです。
しかし、実際は最後の1件のみが出力されています。
##試したこと、考察
Scene2のLabelのpref,city,area,zipの出力の部分が、それぞれ1つしか用意されてないので、1つしか出力できないのだと考えています。
しかし、だとすると、検索結果が何件ヒットするかわからない状態でいくつLabelを宣言しないといけないのかわからないので、どうすればいいのかわかりません。
##最後に
追加情報は載せますので、ご教授お願いします。
##改変した内容
コードの変更(検索の部分)
Java
1while (rs.next()) { 2 Label p = new Label(rs.getString("pref")); 3 Label c= new Label(rs.getString("city")); 4 Label a = new Label(rs.getString("area")); 5 Label z = new Label(rs.getString("zip")); 6 pane6.getChildren().addAll(p, c, a, z); 7 }
コード(GUIの部分)の変更はありません。
実行結果のエラー文
org.postgresql.util.PSQLException: この ResultSet に列名 zip ありません。
回答1件
あなたの回答
tips
プレビュー