从数据库中获取组合框值



我想从数据库中获取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"));
}
}
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));

我认为您需要将组合框的项目类型从列表更改为字符串,因为您想向组合框添加一个字符串值,请尝试以下操作:

@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"));
}
}

我尝试了下面的代码,但只显示第一个值。我通过实现可初始化接口做到了

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);
}
}                                                                                                   

最新更新