Ecco adesso ti posto il passaggio, perchè avendo sfruttato anche Netbeans copiarti tutto il codice stai qui 3 giorni, ti prendo solo i pezzi che servono, aspetta che ci provo. (Ora sono a casa, e da netbeans il programma funziona, ti posto quello che vediamo se varia qualcosa dal precedente) :
Inizio :
public class MainTot extends javax.swing.JFrame {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
PreparedStatement pst = null;
public MainTot() {
initComponents();
}
Codice per il Bottone "Register Data in DB Pack" per il processo di Pack :
private void pa_btnActionPerformed(java.awt.event.ActionEvent evt) {
String usr = usr_txt.getText();
String tsk = pa_list.getSelectedValue().toString();
String sts = "Active";
//SimpleDateFormat df = new SimpleDateFormat("dd-MM-YYYY HH:mm");
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
String query = null;
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String path = "C:\\Users\\pc\\Documents\\NetBeansProjects\\TimeOnTask2\\Database\\TimeOnTask.mdb";
String url = "jdbc:ucanaccess://"+path;
Connection conn = DriverManager.getConnection(url);
if (usr_txt.getText().trim().isEmpty()){
JOptionPane.showMessageDialog(null, "Username Field Requested");
}else if(pa_list.getSelectedValue()== null){
JOptionPane.showMessageDialog(null, "Please Select task in");
}else{
query = "INSERT INTO TimeOnTask(mio, task, in, status) VALUES(?,?,?,?)";
pst = conn.prepareStatement(query);
pst.setString(1, usr);
pst.setString(2, tsk);
pst.setDate(3, sqlDate);
pst.setString(4, sts);
pst.executeUpdate();
JOptionPane.showMessageDialog(null,"Dipendente "+usr+" Registrato come "+tsk);
usr_txt.setText(null);
pa_list.setSelectedIndex(0);
pst.close();
}
}catch(Exception e){
JOptionPane.showMessageDialog(null,"User Not Registered, ERROR : "+e);
System.out.println("ERROR : "+e);
}
updateTsk();
}
Ho lavorato un saccon variabili locali usando Netbeans.
Ora il codice che dichiara le variabili locali :
String usr = usr_txt.getText();
String tsk = pa_list.getSelectedValue().toString();
String sts = "Active";
//SimpleDateFormat df = new SimpleDateFormat("dd-MM-YYYY HH:mm");
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
String query = null;
Successivamente inizio un try and catch per istanziare un collegamento con il DB :
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String path = "C:\\Users\\pc\\Documents\\NetBeansProjects\\TimeOnTask2\\Database\\TimeOnTask.mdb";
String url = "jdbc:ucanaccess://"+path;
Connection conn = DriverManager.getConnection(url);
Poi inizio a scrivere cosa deve fare quel bottone mediante condizioni IF e ELSE
if (usr_txt.getText().trim().isEmpty()){
JOptionPane.showMessageDialog(null, "Username Field Requested");
}else if(pa_list.getSelectedValue()== null){
JOptionPane.showMessageDialog(null, "Please Select task in");
}else{
query = "INSERT INTO TimeOnTask(mio, task, in, status) VALUES(?,?,?,?)";
pst = conn.prepareStatement(query);
pst.setString(1, usr);
pst.setString(2, tsk);
pst.setDate(3, sqlDate);
pst.setString(4, sts);
pst.executeUpdate();
JOptionPane.showMessageDialog(null,"Dipendente "+usr+" Registrato come "+tsk);
Infine dopo aver eseguito tutto resetta tutti i campi al valore iniziale :
usr_txt.setText(null);
pa_list.setSelectedIndex(0);
pst.close();
Dopodichè aggiorna la jtable con i nuovi valori presi dal DB :
}catch(Exception e){
JOptionPane.showMessageDialog(null,"User Not Registered, ERROR : "+e);
System.out.println("ERROR : "+e);
}
updateTsk();
}
Quindi il bottone di registrazione compila il DB con i dati inseriti nei vari campi tranne lo status che è fisso e la data che viene generata automaticamente al momento del clic ed inserita nel DB usando la formattazione :
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
e:
pst.setDate(3, sqlDate);
Spero sia un pò più chiaro come vengono inseriti i dati nel db e poi ripresi dalla jtable..Il ResultSet credo funzioni estraendole come stringhe, perche non ricordo di aver mai usato ResultSetMetaData