2017-11-15 4 views
0

私のGUIには「検索」メニューがあり、Facultyテーブルのssn番号を検索してjavabookデータベースのTextAreaに出力する必要があります。しかし、私は15行のテーブルの最後の行だけを取得します。 searchDBメソッドを呼び出すSearch menuItemを次に示します。テーブルのすべての行をjavabookデータベースのTextAreaに出力します

MenuItem search = new MenuItem("Search"); 
    search.setOnAction((ActionEvent t) -> { 
     try{ 
      searchDB(tArea); 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    }); 

ここにはsearchDBメソッドがあります。

public void searchDB(TextArea tArea) throws SQLException, ClassNotFoundException { 
    if (databaseName != null) { 
     TextInputDialog dialog = new TextInputDialog(); 
     dialog.setContentText("Please enter Faculty ssn number follwing by %"); 
     Optional<String> search_id = dialog.showAndWait(); 

     try { 

      Class.forName("com.mysql.jdbc.Driver"); 
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/" +databaseName+ "?autoReconnect=true&useSSL=false", "scott", "tiger"); 
      Statement statement = connection.createStatement();  
      ResultSet resultSet = statement.executeQuery("select * from Faculty where ssn like '" + search_id.get() + "';");    

      while (resultSet.next()) 
       tArea.setText(resultSet.getString(1) + "\t" + resultSet.getString(2) + "\t" + resultSet.getString(4) + "\t" + resultSet.getString(5)); 

     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

なぜ私はテーブルの最後の行だけを取得できますか? TextAreaでテーブルのすべての行を印刷するには?

答えて

0

setText()を使用しているため、代わりにappend()を使用しています。テキストエリアの場合はjavadocを確認してください。

+0

['appendText()'](https://docs.oracle.com/javase/9​​/docs/api/javafx/scene/control/TextInputControl.html#appendText-java.lang.String)を意味すると思います。 - )( 'JTextArea'のドキュメンテーションをリンクしました)。 –

+0

@James_Dはい私はappendText()appendText()が償却されたappend()を意味する代わりに、代わりにTextAreaを指すようにリンクを更新しました。 – johnII

+0

これは非推奨ではありません。今度は 'java.awt.TextArea'をリンクしています –

関連する問題