gpt4 book ai didi

java - Tableview java显示数据库下一行

转载 作者:行者123 更新时间:2023-11-29 20:14:56 24 4
gpt4 key购买 nike

我试图弄清楚为什么一旦从读取器检测到另一个 RFID 标签,值就会被覆盖到 Tableview 中的同一表行和列。

我想要的只是确保每个数据都能够显示下一个可用行,但我似乎无法解决这个问题。我希望你们能帮忙。谢谢

这是我对表格的声明

public class tableview extends Application implements Initializable {

@FXML
private TableView<UserDetails> table;
@FXML
private TableColumn<UserDetails, String> epc;
@FXML
private TableColumn<UserDetails, String> modCode;
@FXML
private TableColumn<UserDetails, String> modClass;
@FXML
private TableColumn<UserDetails, String> modName;
@FXML
private TableColumn<UserDetails, String> timestamp;




public void initialize(URL location, ResourceBundle resources) {

epc.setCellValueFactory(new PropertyValueFactory<>("epcNo"));
modCode.setCellValueFactory(new PropertyValueFactory<>("moduleCode"));
modClass.setCellValueFactory(new PropertyValueFactory<>("moduleClass"));
modName.setCellValueFactory(new PropertyValueFactory<>("moduleName"));
timestamp.setCellValueFactory(new PropertyValueFactory<>("timestamp"));

public synchronized void moduleInfo(String epcString) {
try {
conn = db.getConnection();
int i = 0;
ResultSet rs = conn.createStatement()
.executeQuery("SELECT * FROM module_info_table where rfid_tag_id = " + epcString);

while (rs.next()) {
String modulecode = rs.getString("module1_code");
String moduleclass = rs.getString("module_class");
String modulename = rs.getString("module1_name");
String epc = rs.getString("rfid_tag_id");
String timestamp = rs.getString("last_updated");

System.out.println(modulecode);
if (epcString.equals(epc)) {
data2 = FXCollections.observableArrayList();
data2.add(new UserDetails(epc, modulecode, moduleclass, modulename, timestamp));
}
}
table.setItems(data2);
table.refresh();

db.closeConn();
} catch (Exception e) {
System.out.println(e);

}

}
public class PrintListener implements ReadListener {
@Override
public void tagRead(Reader r, TagReadData tr) {

try {

String epcString = tr.getTag().epcString();

if (!map.containsKey(epcString)) {


moduleInfo(epcString); < -- call to here


}
table.setItems(data);
table.refresh();

} catch (Exception e) {
System.out.println(e);
}
}

}

这是我的桌面 View :

RFID 标签:45

   EPC     Module Code   Module Class      Module Name         TimeStamp
45 ET123 DCPE/FT/5D Computer System Mon Oct 4 01:13:23am
- - - - -
- - - - -

新RFID标签:100(它将覆盖以前的记录)

   EPC     Module Code   Module Class      Module Name         TimeStamp
100 ET468 DEEE/FT/8G Computer Science Mon Oct 4 01:13:23am
- - - - -
- - - - -

如下图所示:检测到第一个RFID标签,与mysql数据库匹配后显示内容

检测到新的 RFID 标签后,最新的 RFID 标签会覆盖旧记录,这是我不希望发生的情况。

请注意,表格 View 有许多列和行,这些列和行未显示属性,因为我必须裁剪,这占用了大量空间。

最佳答案

您正在此处覆盖 data2:

data2 = FXCollections.observableArrayList();

将其删除并放在此处

public synchronized void moduleInfo(String epcString) {
try {
data2 = FXCollections.observableArrayList();
conn = db.getConnection();
int i = 0;
ResultSet rs = conn.createStatement()
.executeQuery("SELECT * FROM module_info_table where rfid_tag_id = " + epcString);

while (rs.next()) {
String modulecode = rs.getString("module1_code");
String moduleclass = rs.getString("module_class");
String modulename = rs.getString("module1_name");
String epc = rs.getString("rfid_tag_id");
String timestamp = rs.getString("last_updated");

System.out.println(modulecode);
if (epcString.equals(epc)) {

data2.add(new UserDetails(epc, modulecode, moduleclass, modulename, timestamp));
}
}
table.setItems(data2);
table.refresh();

db.closeConn();
} catch (Exception e) {
System.out.println(e);

}

如果我不是瞎子的话,现在应该修复了:P

关于java - Tableview java显示数据库下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com