Как изменить значение Jtable навсегда? - PullRequest
0 голосов
/ 04 августа 2020

Привет, я столкнулся с проблемой, которую не могу решить. Я делаю свой проект Java и создал Jtable для отображения значений из моей базы данных. В одном из столбцов таблицы я устанавливаю все его значения на «ожидающие», и у меня также есть кнопка с именем dispatchButton, которая, когда я нажимаю эту кнопку, я хочу изменить значение одной из строк с «ожидающих» на «отправка». что я не могу заставить его работать должным образом. та же строка, что и новая запись в Jtable. Вдобавок, даже когда значение одной из строк сейчас «отправлено», когда я перезапускаю свое приложение, это значение теперь снова изменяется на «ожидает» вместо «отправлено» снова. Ниже приведен соответствующий код, который я включил для вашей информации и тестирования. Скажите мне, что мне нужно изменить в моем коде, чтобы заставить его работать, большое вам спасибо.

(Примечание: я не создавал столбец «статус» в базе данных, я устанавливаю только значение "статуса", который находится в JTable)

public mainpage() {
        initComponents();
        table_update();
        status_values();
        //status_dispatched();
    }
    
    Connection con1;
    PreparedStatement pst;

private void DispatchButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               

        String type = txttype.getSelectedItem().toString();
        String name = txtname.getText();
        String quantity = txtquantity.getText();
        
        try {
            //String query = "INSERT INTO `request`(`id`, `itemtype`, `itemname`, `quantity`) VALUES (?, ?, ?, ?)";
            Class.forName("com.mysql.jdbc.Driver");
            con1 = DriverManager.getConnection("jdbc:mysql://localhost/request", "root", "password");
            pst = con1.prepareStatement("insert into request (itemtype,itemname,quantity) values(?,?,?)");
            pst.setString(1, type);
            pst.setString(2, name);
            pst.setString(3, quantity);
            pst.executeUpdate();
            JOptionPane.showMessageDialog(null, "Item has been dispatched");
            // To update the newly recorded data to the table
            table_update();
            // To ensure that all records are still pending
            status_values();
            // Display dispatched on the row
            status_dispatched();
            
            // Set the textfields to empty upon button click
            txttype.setSelectedIndex(-1);
            txtname.setText("");
            txtquantity.setText("");
            txttype.requestFocus();
            
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
        }
    }               

private void table_update(){
        try {
            int c;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                con1 = DriverManager.getConnection("jdbc:mysql://localhost/request", "root", "password");
                pst = con1.prepareStatement("select * from request");
                ResultSet rs = pst.executeQuery();
                
                ResultSetMetaData rsd = rs.getMetaData();
                c = rsd.getColumnCount();
                
                DefaultTableModel model = (DefaultTableModel)DispatchTable.getModel();
                model.setRowCount(0);

                while(rs.next()){
                    Vector v2 = new Vector();
                    
                    for(int i=1; i<=c; i++){
                        v2.add(rs.getString("id"));
                        v2.add(rs.getString("itemtype"));
                        v2.add(rs.getString("itemname"));
                        v2.add(rs.getString("quantity"));
                    }           
                    model.addRow(v2); 
                }
                  
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } catch (SQLException ex) {
            Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    
    private void status_values(){
        // Set all Status rows to pending
        for(int row = 0; row<DispatchTable.getRowCount(); row++){
            DispatchTable.setValueAt("Pending", row, DispatchTable.getColumn("Status").getModelIndex());
        }
    }
    
    private void status_dispatched(){
        // Upon the click of the Dispatch button, the status of that row should be dispatched
        String dispatch_row = txtdispatch.getText();
        int convert_dispatch_row = Integer.parseInt(dispatch_row);
        DispatchTable.setValueAt("Dispatched", (convert_dispatch_row)-1, DispatchTable.getColumn("Status").getModelIndex());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...