java - 使用 Sql 中的第一个组合框字符串值填充第二个组合框

标签 java javafx

我想在查询中传递第一个ComboBox的字符串值来填充第二个ComboBox,因此查询中的条件是这样的:SELECT NIT FROM ENTIDAD WHERE NOMBRE='+FirstComboboxStringValue+',所以我有两个方法,在第一个方法中填充名称值,在第二个方法中填充Nit值,我需要传递第一个C中的名称值omboBox在该查询中,有以下方法:

public void llenadocombobox2() {
        Connection conn=null;
        try {
            ObservableList<String> listacombonombre= FXCollections.observableArrayList();
            String consulta = "select nombre from entidad";
            conn = DriverManager.getConnection("jdbc:sqlserver://DESKTOP-4JA6SFR:1433;databaseName=GLOSASNINO", "sa", "123");
            PreparedStatement ps =conn.prepareStatement(consulta);
            ResultSet rs = ps.executeQuery();
             while ( rs.next() ) 
             {  
               listacombonombre.add(rs.getString("nombre"));
             }
          entidad.setItems(listacombonombre);  
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public void llenadocombobox3() {
         llenadocombobox2();
        String FirstComboboxStringValue= entidad.getSelectionModel().getSelectedItem();
        Connection conn=null;
        try {
            ObservableList<String> listacombonit= FXCollections.observableArrayList();
            String consulta = "select nit from entidad where nombre='"+FirstComboboxStringValue+"'";
            conn = DriverManager.getConnection("jdbc:sqlserver://DESKTOP-4JA6SFR:1433;databaseName=GLOSASNINO", "sa", "123");
            PreparedStatement ps =conn.prepareStatement(consulta);
             ResultSet rs = ps.executeQuery();
             while ( rs.next() ) 
             {  
               listacombonit.add(rs.getString("nit"));
             }

          nit.setItems(listacombonit);

        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

如果有人可以在这里提供指导可能会有所帮助。问候。

最佳答案

这是一个解决您问题的演示。您应该根据第一个 ComboBox 选择查询数据库。使用查询结果填充第二个ComboBox。 <- 这部分应该发生在第一个 ComboBox valueProperty change 监听器中。

import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ComboBoxExperiments extends Application
{

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        primaryStage.setTitle("ComboBox Experiment 1");

        ComboBox<String> comboBox = new ComboBox();
        comboBox.getItems().add("Choice 1");
        comboBox.getItems().add("Choice 2");
        comboBox.getItems().add("Choice 3");

        ComboBox<String> comboBox2 = new ComboBox();

        comboBox.valueProperty().addListener((observable, oldValue, newValue) -> {
            comboBox2.getItems().setAll(queryFakeDB(newValue));
            comboBox2.getSelectionModel().selectFirst();
        });

        comboBox.getSelectionModel().selectFirst();
        comboBox2.getSelectionModel().selectFirst();

        VBox vBox = new VBox(comboBox, comboBox2);
        Scene scene = new Scene(vBox, 200, 120);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    public static void main(String[] args)
    {
        Application.launch(args);
    }

    public List<String> queryFakeDB(String comboBox1Selection)
    {
        //Connect to fake database
        //Query fake database
        //Store results in a List
        //This simulates getting results from db based on combobox1 selection
        List<String> results = new ArrayList();
        switch (comboBox1Selection) {
            case "Choice 1":
                results.add("A");
                results.add("B");
                results.add("C");
                break;
            case "Choice 2":
                results.add("a");
                results.add("b");
                results.add("c");
                break;
            case "Choice 3":
                results.add("X");
                results.add("Y");
                results.add("Z");
                break;
        }

        //return result(s)
        return results;
    }
}

关于java - 使用 Sql 中的第一个组合框字符串值填充第二个组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53341583/

相关文章:

从 CMD 运行 JavaFx 应用程序时未编译

java - Java : Path does not chain with any of the trust anchors 上的 SSL 异常

java - 如何使用 GSON 解析错误?

java - Cassandra Accessor 和 "CQL"注入(inject)

java - 无法使用java在Windows服务器中保存utf8文件

java - 如何在 JavaFX 中对齐三个或更多按钮上的一行?

java - jfxrt.jar 在 Eclipse Kepler (SR2) 插件中的使用

java - 在 javafx 中使用更改监听器时发生 StackOverFlow 错误

java - 从 EventHandler 目标访问任意节点

java - Elasticsearch 中 Java Rest Client 的批量操作