Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [Java] Modifiche mysql da JTable

    sul mio progettino stavo cercando il modo migliore per permettermi la modifica dei dati.
    ho pensato di farlo direttamente da jtable che per ora è così:
    codice:
    tableData = new javax.swing.JTable();
    model = new myTableModel(data, head);
    tableData.setModel( model
        );
    
    tableData.setAutoCreateRowSorter(true);
    
    tableData.setCellSelectionEnabled(true);
    
    jScrollPane1.setViewportView(tableData);
    ......
        private class myTableModel extends DefaultTableModel {
    
            public myTableModel(Object[][] data, String[] col) {
                super(data, col);
            }
    
            @Override
            public boolean isCellEditable(int row, int column) {
                return true;
            }
        }
    in pratica posso selezionare le celle e posso editarle.
    una volta editate dovrei mandare le modifiche al db.
    è possibile fare una cosa del genere??

  2. #2
    Si certo.
    Poi però qualsiasi oggetto abbia inserito nelle celle, le dovrai vedere come String, quindi fare le operazioni del caso.

    Usando TableModel.getValueAt() recuperi la stringa.
    lolide
    Java Programmer

    Informati

  3. #3
    ok:
    codice:
    JOptionPane.showMessageDialog(null, tableData.getValueAt(tableData.getSelectedRow(), tableData.getSelectedColumn()));
    ma se volessi recuperare i valori di tutte le cella della riga selezionata?
    ho disabiltato cellSelectionEnable e abiltato rowSelectionEnable.
    così posso selezionare tutta la riga, modifico la cella che mi pare, e salvo i valori di tutte le celle.
    ho visto getSelectedRow, ma ritorna solo l'indice della riga selezionata.
    ma poi è possibile recuperare i valori di tutte le celle?

  4. #4
    Originariamente inviato da fermat
    ma se volessi recuperare i valori di tutte le cella della riga selezionata?
    Potresti fare così:
    ottieni il numero delle colonne del tuo TableModel invocando su di esso getColumnCount() e quindi usi un indice
    0 <= i < getColumnCount() e lo passi opportunamente al metodo getValueAt.

  5. #5
    ok ho fatto così e funziona:
    codice:
            int numCol = model.getColumnCount();
            Object value;
            for (int i = 0; i < numCol; i++) {
                value = tableData.getValueAt(tableData.getSelectedRow(), i);
                System.out.println(value);
            }
    i risultati sono messi così:
    6
    hacker 6.0
    stuart mcclure, joel scambray, george kurtz
    apogeo
    0
    (empty)
    (empty)

    a questo punto devo passare questi valori alla query di update dove alcuni sono int e altri string.
    per estrapolare i singoli dati e trasformarli come posso fare?
    cioè, io qua ottengo un singolo Object, e possibile estrapolare i singoli dati?

  6. #6
    Ciao..

    Mi sono trovato anch'io in questo problema (in un progetto di una biblioteca in swing) ovvero modificare una riga e salvare le modifiche nel db.
    Ho letto in giro che le jTable dovrebbero e dico dovrebbero essere usate solo per visualizzare i dati del db.
    Io ho deciso di risolvere cosi: ho reso non editabili le righe della tabella, poi per modificare un oggetto seleziono la riga clicco su un pulsante "Modifica" e appare un form con tutti i campi relativi all'oggetto che ovviamente posso cambiare.

  7. #7
    ok però il problema rimarrebbe.
    cioè, seleziono la riga e clicco su pulsante che mi apre un form per la modifica.
    il form si dovrebbe riempire con i valori della riga "spezzati" in modo che il form si riempia con i valori di ogni singoila cella.
    io qui ho un unico object dal quale devo estrapolare le varie parti.
    nn so se mi sono spiegato.

  8. #8
    Originariamente inviato da fermat
    per estrapolare i singoli dati e trasformarli come posso fare?
    Cerca di spiegarti meglio..cosa intendi?

  9. #9
    ok.
    allora, nel modo in cui ho fatto ottengo un un unico oggetto Object con tutti valori della riga selezionata.
    però a me serve ottenere il valore di ogni singola cella in modo da passarlo alla classe che fa l'update.
    ad esempio:
    codice:
    public class DoUpdate {
    
        public static void update(int id, String name, int author_id, int editor_id, String isbn, ecc....) throws ClassNotFoundException, SQLException {
    ...........
        }
    }
    quindi in sostanza da qull'Object devo estrapolare i singoli valori da passare poi al metodo.
    ogni valore corrisponde al campo da cambiare nella tabella mysql.

  10. #10
    Originariamente inviato da fermat
    ok.
    allora, nel modo in cui ho fatto ottengo un un unico oggetto Object con tutti valori della riga selezionata.
    però a me serve ottenere il valore di ogni singola cella in modo da passarlo alla classe che fa l'update.
    ad esempio:
    codice:
    public class DoUpdate {
    
        public static void update(int id, String name, int author_id, int editor_id, String isbn, ecc....) throws ClassNotFoundException, SQLException {
    ...........
        }
    }
    quindi in sostanza da qull'Object devo estrapolare i singoli valori da passare poi al metodo.
    ogni valore corrisponde al campo da cambiare nella tabella mysql.
    Se conosci bene questa entità ti basta fare il cast del valore contenuto nella cella.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.