【问题标题】:How to clear all data inserted in a jTable如何清除插入jTable中的所有数据
【发布时间】: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 的问题呢?

标签: java mysql swing jtable


【解决方案1】:

有什么办法可以解决这个问题并在插入新结果之前清除表格?

DefaultTableModel tblModel = (DefaultTableModel)jTablehipastyears.getModel();
tblModel.setRowCount(0);

while (...)
{
    ....
    tblModel.addRow(...);
}                    

【讨论】:

  • 在我的代码中我可以在哪里添加这些行@camickr
  • 您只需将代码移到当前循环之外。
  • @Kokotech 很高兴它有帮助。不要忘记通过单击复选标记(答案旁边)来“接受”答案,这样人们就知道问题已经解决了。请参阅:What should I do when someone answers my question
【解决方案2】:

感谢@camickr,我确实使用您的方法将代码更改为如下,并且它起作用了。

if(!jTextFieldsearchstid.getText().isEmpty() ) {
               
          
    preparedStatement.setString(1, 
    jTextFieldsearchstid.getText());
    ResultSet resultSet = preparedStatement.executeQuery();
                
                
    DefaultTableModel tblModel = 
    (DefaultTableModel)jTablehipastyears.getModel();
    tblModel.setRowCount(0);
         
          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};


                    tblModel.addRow(pastHistTableData);


             
                }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多