Ok, vì vậy tôi mới làm điều này, và tôi đã tìm kiếm hai tuần để có được một kết quả SQL để in ra một TableView được tạo bởi JavaFX Scene Builder. Tôi có thể in resultset của tôi bằng cách sử dụng System.out.println và dữ liệu là chính xác, nhưng khi tôi thử đặt nó vào một List, tableview của tôi hiển thị một cột với 0 và cột còn lại trống. Tôi đang cố gắng để in danh sách (println), nhưng tôi nhận được con trỏ đối tượng (?) Và không phải là dữ liệu, vì vậy tôi không thể nhìn thấy nếu tôi đang đi từ ResultSet vào danh sách không chính xác.Hiển thị các mục từ cơ sở dữ liệu trong JavaFX TableView
Bất kỳ trợ giúp nào sẽ được đánh giá cao ... Tôi muốn hiểu khái niệm, không chỉ nhận được câu trả lời.
Đây là mã điều khiển của tôi:
public class TesterUIController implements Initializable {
@FXML
private TableView<dataClass> Table;
@FXML
private Button TestButton;
@FXML
private TableColumn<dataClass, Integer> colKey;
@FXML
private TableColumn<dataClass, String> colSalesNo;
public static void main (String[] args) {
System.out.println("Main has run");
}
/**
*
* @param fxmlFileLocation
* @param resources
*/
@Override
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {
TestButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Button Pressed");
colKey.setCellValueFactory(new PropertyValueFactory<dataClass, Integer>("Key"));
colSalesNo.setCellValueFactory(new PropertyValueFactory<dataClass, String>("SalesNo"));
Table.getItems().setAll(gobbledyGook());
}
});
}
/*
* dataClass is a (sub)class representing the data for TableView "Table"
*/
public class dataClass {
private IntegerProperty Key;
public void setKey (int value) {KeyProperty().set(value);}
public int getKey() {
return KeyProperty().get();
}
public IntegerProperty KeyProperty() {
if (Key == null) Key = new SimpleIntegerProperty(this, "Key");
return Key;
}
private StringProperty SalesNo;
public void setSalesNo(String value) {
SalesNoProperty().set(value);
}
public String getSalesNo() {
return SalesNoProperty().get();
}
public StringProperty SalesNoProperty() {
if (SalesNo == null) SalesNo = new SimpleStringProperty(this, "SalesNo");
return SalesNo;
}
}
private List<dataClass> gobbledyGook() { //ObservableList<dataClass> gobbledyGook() { // ResultSet getData() {
Connection conn;
String dbDriver;
Statement st;
ResultSet rs;// = null;
List ll = new LinkedList();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
dbDriver = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};"
+ "DBQ=Inventario.mdb;";
conn = DriverManager.getConnection(dbDriver, "", "");
st = conn.createStatement();
String getSalesNumber = "SELECT * FROM SalesNumber " // TOP 1 * FROM ...
+ "ORDER BY SalesNumber.Key DESC";// LIMIT 1";
rs = st.executeQuery(getSalesNumber);
while (rs.next()) {
int Key = rs.getInt(1);
double saleNo = rs.getDouble(2);
NumberFormat formatter = new DecimalFormat("###########");
String SalesNo = formatter.format(saleNo);
System.out.println(Key + ", " + SalesNo); //key + ", " + saleNo);
dataClass roww = new dataClass();
ll.add(roww);
}
}
catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(TesterUIController.class.getName()).log(Level.SEVERE, null, ex);
}
return ll;
}
}
OMG, CẢM ƠN! Bản sửa lỗi của bạn hoạt động hoàn hảo và các liên kết của bạn đang giúp tôi hiểu được logic đằng sau nơi tôi đã đi sai! Đối với các quy ước đặt tên, tôi biết tôi đã không theo dõi họ, bởi vì tôi chưa học được tất cả, nhưng có, tôi đang làm việc trên đó. Một lần nữa cám ơn! Giúp đỡ tốt nhất tôi đã tìm thấy trong hai tuần đuổi đuôi của tôi! – John