如何从mysql数据库中过滤tableview数据?

时间:2017-06-18 00:46:56

标签: java sql javafx javafx-8

我有这个界面

http://imgur.com/ApJZtXe

我希望当我在“Buscar”文本字段中写入时,表中的数据会根据查询进行更改,到目前为止,我已将此代码填充到表中

Statement st=null;
        ResultSet rs;

        try{
            Connection miConexion= (Connection) Conectar.GetConnection(); //conexion de la base de datos que se manda llamar

            st = (Statement) miConexion.createStatement();
            data = FXCollections.observableArrayList();

            rs = st.executeQuery("select * from accesorios ");

            for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){

                //We are using non property style for making dynamic table

                final int j = i;

                TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));

                col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){

                    public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {

                        return new SimpleStringProperty(param.getValue().get(j).toString());

                    }

                });



                tableView.getColumns().addAll(col);

                System.out.println("Column ["+i+"] ");

            }

            /********************************
             60
             * Data added to ObservableList *
             61
             ********************************/

            while(rs.next()){

                //Iterate Row

                ObservableList<String> row = FXCollections.observableArrayList();

                for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){

                    //Iterate Column

                    row.add(rs.getString(i));

                }

                System.out.println("Row [1] added "+row );

                data.add(row);



            }



            //FINALLY ADDED TO TableView

            tableView.setItems(data);

        }catch(Exception e){

            e.printStackTrace();

            System.out.println("Error on Building Data");

        }

    }

如果你能给我一些如何做的指导,那将非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

好问题。您可能不是唯一面临此问题的人,但我还没有看到类似的问题。 对我来说,它可用于这样的数据库查询:

try {
//          
            statement= Main.conn.prepareStatement("Select programme,hersteller from softwarearchivtabelle where programme like '*" +
             textfieldSearch.getText() 
            + "*' OR hersteller like '*"+ textfieldSearch.getText() 
            + "*';");
            rs=statement.executeQuery();

            while(rs.next()) {
                Software softwaredb= new Software(rs.getString(1),rs.getString(2));
                softwareliste.add(softwaredb);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        tableviewSoftwarearchiv.setItems(softwareliste);
    }

这也很有趣,在没有sql查询的情况下如何执行此操作,但只过滤了@James_D这样的表视图,但这在我的搜索栏中无法正常工作