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