【发布时间】:2021-04-09 19:03:35
【问题描述】:
我设计了一个 jTable,它将显示 MySql DB 中表中的数据。
表名为studentrolls,主键为STRollID (int),外键为StudentID (Varchar), BachID (year)。
因此,在 jTextField 中键入 StudentID 并单击 jButton 后,jTable 中应仅显示有关学生的数据。
它实际上可以工作,但有两个问题,而不是在年份列上显示年份,而是显示日期,例如它应该显示 2020 但它显示 2020-01-01。
主要问题是当我输入另一个StudentID时,它会将新结果添加到旧结果中,所以当我第一次输入StudentID时,我得到了很好的结果,然后当我输入另一个@ 987654328@ 并单击我在表格中得到的按钮,新结果与第一个学生的结果混合在一起,等等......
有什么办法可以解决这个问题并在插入新结果之前清除表格?
这是我的代码:
private void rSButtonIconDsearchstidActionPerformed(java.awt.event.ActionEvent evt) {
try{
String sqlqueryPastYHi = "SELECT * FROM studentrolls WHERE StudentID = ? ORDER BY BachID";
PreparedStatement preparedStatement = con.prepareStatement(sqlqueryPastYHi);
PreparedStatement pst=con.prepareStatement(sqlqueryPastYHi);
if(!jTextFieldsearchstid.getText().isEmpty() ) {
preparedStatement.setString(1, jTextFieldsearchstid.getText());
ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
String scolaryear = resultSet.getString("BachID");
String stclass = resultSet.getString("ClassID");
String totpercent = String.valueOf(resultSet.getInt("PourcentTotal"));
String finalplace = String.valueOf(resultSet.getInt("PlaceFinale"));
String appication = resultSet.getString("Aplication");
String behavior = resultSet.getString("Conduite");
String finalaction = resultSet.getString("ActionFinale");
String pastHistTableData [] = {scolaryear, stclass, totpercent, finalplace, appication, behavior, finalaction};
DefaultTableModel tblModel = (DefaultTableModel)jTablehipastyears.getModel();
tblModel.addRow(pastHistTableData);
}
}
else{
JOptionPane.showMessageDialog(this, "Veillez taper le matricule d'un eleve svp.");
}
}catch (Exception exception){
JOptionPane.showMessageDialog(this, "erreur des donnees: " + exception.getMessage());
}
}
【问题讨论】:
-
当变量 Type 为 ''year'' 时,显示 Full Date 而不是 YEAR 的问题呢?