从数据库获取组合框值

时间:2020-06-23 06:45:41

标签: java sql sql-server javafx jdbc

我想从数据库获取ComboBox值。我正在尝试以下代码,它不会返回任何错误,但是不会向ComboBox添加任何项目。

@FXML
private ComboBox<List> laptopos_combo;
public void filloscombo() throws SQLException
{
    String connectionUrl = "jdbc:sqlserver://WIN\\SQLEXPRESS:1433;database=itinventory;" + 
    "user=sa;"+ "password=Varpal@1234;";
    Connection connect= DriverManager.getConnection(connectionUrl);
    String query = "Select * from operatingsystem";
    
    PreparedStatement pst = connect.prepareStatement(query);
    // log.conn().prepareStatement(query);
    ResultSet os = pst.executeQuery();
    
    while(os.next())
    {
        ((List<String>) laptopos_combo).add(os.getString("os"));
    }
}

3 个答案:

答案 0 :(得分:0)

public ArrayList<Object> selectAllObjects() {
        ArrayList<Object> list = new ArrayList<>();
        try {
             String connectionUrl 
             ="jdbc:sqlserver://WIN\\SQLEXPRESS:1433;database=itinventory;" + 
             "user=sa;"+ "password=Varpal@1234;";
             Connection connect= DriverManager.getConnection(connectionUrl);
             Statement stmt = connect.createStatement();
             ResultSet result = stmt.executeQuery("SELECT QUERY");
             while (result.next()) {
                Object obj = new Object();
                obj.setId(result.getInt(1));
                //setters
                list.add(payment);
            }
        } catch (SQLException se) {
            se.printStackTrace();
        } finally {
            if (connect != null) {
                try {
                    connect.close();
                } catch (SQLException se) {
                    se.printStackTrace();
                }
            }
        }
        return list;
    }

然后您可以调用该函数,将其保存到另一个Arraylist中,然后像这样设置它:

comboBox.setItems(arraylist);
comboB.setValue(arraylist.get(0));

答案 1 :(得分:0)

我认为您需要将ComboBox的项目类型从List更改为String,因为您想向ComboBox添加字符串值,请尝试以下操作:

@FXML
private ComboBox<String> laptopos_combo;
public void filloscombo() throws SQLException {
    String connectionUrl ="jdbc:sqlserver://WIN\\SQLEXPRESS:1433;database=itinventory;" +
            "user=sa;"+ "password=Varpal@1234;";
    Connection connect= DriverManager.getConnection(connectionUrl);
    String query="Select * from operatingsystem";

    PreparedStatement pst = connect.prepareStatement(query);
    ResultSet os = pst.executeQuery();
    laptopos_combo.getItems().clear(); // Add this line to remove all items before you add the database one
    while(os.next()) {
        laptopos_combo.getItems().add(os.getString("os"));
    }
}

答案 2 :(得分:-1)

我尝试了以下代码,但仅显示第一个值。我是通过实现可初始化接口实现的

try
{
    String connectionUrl = "jdbc:sqlserver://WIN\\SQLEXPRESS:1433;database=itinventory;" + 
        "user=sa;"+ "password=Varpal@1234;";
    Connection connect= DriverManager.getConnection(connectionUrl);
    String query="Select * from operatingsystem";
    
    PreparedStatement pst = connect.prepareStatement(query);
            // log.conn().prepareStatement(query);
    ResultSet os = pst.executeQuery();
    
    while(os.next())
    {
        ObservableList<String> value = 
  FXCollections.observableArrayList(os.getString("os"));
         System.out.println(value);
        laptopos_combo.setItems(value);
    }
}                                                                                                   
相关问题