So speichern Sie bearbeitete JTable Daten in die Datenbank?

Erstmal sorry für mein schlechtes Englisch. Ich werde mein bestes versuchen, Sie zu verstehen mein problem.

Alles was ich will ist das speichern der neuen Daten welche der Benutzer eingegeben hat in die JTable, wenn Save-button geklickt.

Bin ich abrufen Student-ID, den Namen in den ersten beiden Spalten aus der Datenbank und auch ich habe Hinzugefügt aktuelle Datum in der Dritten Spalte und Abwesend/Anwesend, als vierte Spalte ist editierbar. Ich habe folgenden code zum abrufen von Daten aus der Datenbank.

**Attendance.java** :
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package shreesai;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.Vector;

/**
 *
 * @author Admin
 */

public class Attendance{

    Connection con = Connectdatabase.ConnecrDb();
    java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());
    SimpleDateFormat fromUser = new SimpleDateFormat("dd/MM/yyyy");
    String d1 = fromUser.format(sqlDate);
    String d = d1.toString();
    public Vector getEmployee()throws Exception
    {

        Vector<Vector<String>> employeeVector = new Vector<Vector<String>>();

        PreparedStatement pre = con.prepareStatement("select studentid,name from student");
        ResultSet rs = pre.executeQuery();
        while(rs.next())
        {

            Vector<String> employee = new Vector<String>();
            employee.add(rs.getString(1)); //Empid
            employee.add(rs.getString(2));//name
            employee.add(d);
            employeeVector.add(employee);

        }        
        if(con!=null)
        con.close();
        rs.close();
        pre.close();

        return employeeVector;
    }

}

**AttendanceGUI.java : **

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package shreesai;

import static java.awt.Frame.MAXIMIZED_BOTH;
import java.sql.Connection;
import java.util.Vector;
import javax.swing.JOptionPane;

/**
 *
 * @author Admin
 */

public class AttendanceGUI extends javax.swing.JFrame {

    /**
     * Creates new form AttendanceGUI
     */
    Connection con = Connectdatabase.ConnecrDb();
    private Vector<Vector<String>> data;
    private Vector<String> header;
    public AttendanceGUI() throws Exception {

        this.setLocationRelativeTo(null);
        setExtendedState(MAXIMIZED_BOTH);
        Attendance att = new Attendance();

        data = att.getEmployee();

        header = new Vector<String>();
        header.add("Student ID");
        header.add("Student Name");
        header.add("Date");
        header.add("Absent/Present");
        initComponents();
    }
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    //<editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        AttendanceT = new javax.swing.JTable();
        SaveAtt = new javax.swing.JButton();
        Exit = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        AttendanceT.setModel(new javax.swing.table.DefaultTableModel(
            data,header
        )
        {public boolean isCellEditable(int row, int column){return true;}}

    );
    AttendanceT.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
    TableColumnAdjuster tca = new TableColumnAdjuster(AttendanceT);
    tca.adjustColumns();
    AttendanceT.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    jScrollPane1.setViewportView(AttendanceT);

    SaveAtt.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); //NOI18N
    SaveAtt.setText("Save Attendance");
    SaveAtt.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            SaveAttActionPerformed(evt);
        }
    });

    Exit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/exit.png"))); //NOI18N
    Exit.setText("Exit");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(18, 18, 18)
            .addComponent(SaveAtt, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(18, 18, 18)
            .addComponent(Exit, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(176, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(SaveAtt, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(Exit, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    pack();
    }//</editor-fold>                        

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

    }                                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(AttendanceGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(AttendanceGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(AttendanceGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(AttendanceGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try{
                    new AttendanceGUI().setVisible(true);
                }
                catch(Exception e){
                    JOptionPane.showMessageDialog(null,e);
                }
            }
        });
    }
    //Variables declaration - do not modify                     
    private javax.swing.JTable AttendanceT;
    private javax.swing.JButton Exit;
    private javax.swing.JButton SaveAtt;
    private javax.swing.JScrollPane jScrollPane1;
    //End of variables declaration                   
}

Diese Ausgabe bekomme ich, wenn ich laufen JFrame :

So speichern Sie bearbeitete JTable Daten in die Datenbank?

Jetzt, Was ich will ist eigentlich, wenn Benutzer Bearbeiten Daten in JTable nur, wie in folgendem Bild :

So speichern Sie bearbeitete JTable Daten in die Datenbank?

****Nach dem klicken auf Speichern die Teilnahme Taste die aktuelle JTable Werte sollten in die Datenbank eingegeben. Ich bin mit der Sqlite-Datenbank-addon in Firefox. Erstellt habe ich die Teilnahme-Tabelle in meine Datenbank, die mit studentid integer, name varchar, date, DATETIME und preab VARCHAR(Diese zum speichern, ob ein bestimmter Schüler war vorhanden oder nicht vorhanden) ****

Ich hoffe, dass Sie bekommen, was mein problem ist. Vielen Dank im Voraus.

  • Lernen Sie bitte Java-Namenskonventionen und bei Ihnen bleiben, wird es schwer zu verstehen was genau der code tut 🙁
  • Versuche mein bestes, schöne Kuh, Sorry!
  • Keine Notwendigkeit zu fühlen, sorry, nur jede Sprache hat einen anderen Konventionen, und wenn man sich mit Ihnen, wird es ein wenig mehr einfach zu verstehen, wie die Strömung in Bewegung ist, während der Ausführung durch einen code 🙂 Kein Zweifel, man lernt durch Fehler 🙂 Für die Art und Weise Sie hatte diese Frage gestellt, ich wollte upvote dies aber nicht tun, dass heute, da mein limit für den Tag gegangen 🙁
Schreibe einen Kommentar