Java 如何清除jTable中插入的所有数据

Java 如何清除jTable中插入的所有数据,java,mysql,swing,jtable,Java,Mysql,Swing,Jtable,我设计了一个jTable,它将在MySql数据库中显示表中的数据 表名为studentrolls,主键为walkid(int),外键为StudentID(Varchar),BachID(year) 因此,在jtext字段中键入StudentID并单击jb按钮后,jTable中应该只显示有关该学生的数据 它实际上可以工作,但我有两个问题,不是在年份栏上显示年份,而是显示日期,例如,它应该显示2020,但它显示2020-01-01 主要问题是,当我输入另一个StudentID时,它会将新结果添加到旧

我设计了一个jTable,它将在MySql数据库中显示表中的数据

表名为
studentrolls
,主键为
walkid
(int),外键为
StudentID
(Varchar),
BachID
(year)

因此,在jtext字段中键入
StudentID
并单击jb按钮后,jTable中应该只显示有关该学生的数据

它实际上可以工作,但我有两个问题,不是在年份栏上显示年份,而是显示日期,例如,它应该显示2020,但它显示2020-01-01

主要问题是,当我输入另一个
StudentID
时,它会将新结果添加到旧结果中,因此当我第一次输入一个
StudentID
时,我会得到好结果,然后当我输入另一个
StudentID
并单击表中的按钮时,新结果与第一个学生的结果混合在一起,等等

有没有办法解决这个问题并在插入新结果之前清除表格

这是我的密码:

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());
    } 
}
有没有办法解决这个问题并在插入新结果之前清除表格


您可以尝试使用

谢谢@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);


             
                }

在我的代码中,我可以在哪里添加这些行@camickr您只需将代码移出当前循环即可。@Kokotech很高兴这有帮助。不要忘记通过点击复选标记(答案旁边)来“接受”答案,这样人们就知道问题已经解决了。请参阅:。当变量类型为“YEAR”时,显示一年的完整日期整数的问题如何?(1-)这不会像OP所要求的那样“清除表”。
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);


             
                }