Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java] salvataggio/recupero vector da database

    buondì a tutt!!

    vi espongo subito il problema,devo recuperare tutti i dati di una tabella,salvarli su un database (sqlite) per poi poterli recuperare per metterli dentro un'altra tabella.


    utilizzando il metodo .getdatavector().tostring riesco a salvarlo senza problemi,ma al momento del recupero mi blocco poichè ovviamente lo riprendo come fosse una Stringa e non posso usare il cast (vector)

    la mia domanda è:
    posso trasformare il valore salvato come .getdatavector().tostring in un vector?
    esiste un modo migliore di fare questa operazione?


    grazie in anticipo per eventuali risposte

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Qual è lo schema della tua tabella? Perché immagino ci sia un modo più furbo per salvare a db un Vector...

    Più banalmente potresti usare un campo BLOB.

    ps: curiosità, qual è l'output di getDataVector().toString()? (e, più che altro, da dove viene questo metodo?)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    questa è la classe che e stavo provando per capire come procede:
    codice:
    import java.awt.Frame;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.Vector;
    
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    
    public class Table {
        public JTable tabella;
        public JScrollPane scroll;
        public JFrame finestra;
         
        DefaultTableModel model = new DefaultTableModel();
        
        
        
     	public  Table(){
     		
     	       
     		tabella = new JTable (model);
     	        
     	        
     		model.addColumn("nome");
     		model.addColumn("cognome");
     		model.addColumn("telefono");
     		model.addColumn("mail");
     	        
     	    
     		
     	        
     		
    
     		scroll=new JScrollPane(tabella);
     		
     		finestra = new JFrame ();
     		
     		finestra.add(scroll);
     		finestra.setVisible(true);
     		finestra.setBounds(50, 50, 300, 300);
     	    
     	     
     	     
     	   tabella.getModel().addTableModelListener(new MyTableModel(tabella, this));
     	   
     	   
     	   
     	   //valori di prova
     	  Vector<String> row = new Vector<String>();
    		row.addElement("luca");
    		row.addElement("matta");
    		row.addElement("35345325");
    		row.addElement("luca@info.it");
    		model.addRow(row);
    		
     	   String vettore = model.getDataVector().toString();
     	   System.out.println(vettore);
     	}
     	  
     	    
        public static void main(String[] args) {
     Table a = new Table();
        }
    
    }
    questo il table model :
    codice:
    import java.awt.Color;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.Vector;
    
    import javax.swing.JTable;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    
    public class MyTableModel implements TableModelListener{
    
    		  JTable table;
    		  Table prova;
    		  
    		  MyTableModel(JTable table,Table prova) {
    		    this.table = table;
    		    this.prova=prova;
    		    table.setRowSelectionAllowed(false);
    		    table.setColumnSelectionAllowed(false);
    		    table.setCellSelectionEnabled(false);
    		    
    			  
    		    
    		    
    		  }
    
    		  public void tableChanged(TableModelEvent e) {
    		    int firstRow = e.getFirstRow();
    		    int lastRow = e.getLastRow();
    		    int index = e.getColumn();
    
    		    switch (e.getType()) {
    		    case TableModelEvent.INSERT:
    		      for (int i = firstRow; i <= lastRow; i++) {
    		        System.out.println("inserito");
    		        
    		      }
    		      break;
    		    case TableModelEvent.UPDATE:
    		      if (firstRow == TableModelEvent.HEADER_ROW) {
    		        if (index == TableModelEvent.ALL_COLUMNS) {
    		          System.out.println("A column was added");
    		        } else {
    		        	System.out.println("aggiornata");
    		        	System.out.println(index + "in header changed");
    		        }
    		      } 
    		      
    		      else {
    		        for (int i = firstRow; i <= lastRow; i++) {
    		          if (index == TableModelEvent.ALL_COLUMNS) {
    		            System.out.println("All columns have changed");
    		        	  break;
    		          } else {
    		            System.out.println(index);
    		            System.out.println(table.getSelectedRow() + table.getSelectedColumn());
    
    		            Vector num = prova.model.getDataVector();
    		            System.out.println(num);
    		            
    		        			    try {
    						
    				           Connection conn = DriverManager.getConnection("jdbc:sqlite:agenda.db");
    				           
    				         PreparedStatement prep = conn.prepareStatement("INSERT INTO agenda(data) VALUES(?);");
    				          
    				         prep.setString(1,num.toString());
    				
    				prep.execute();
    				
    						} catch (SQLException e1) {
    							// TODO Auto-generated catch block
    							e1.printStackTrace();
    						} 
    		          }
    		        }
    		      }
    		      
    		      break;
    		    case TableModelEvent.DELETE:
    		      for (int i = firstRow; i <= lastRow; i++) {
    		        System.out.println("delete");
    		      }
    		      break;
    		    }
    		  }
    		  
    		  
    		  
    		}
    non ho capito la seconda domanda

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    In realtà ti ho chiesto lo schema della tabella (schema SQL eh...)

    Dalla query che fai vedo che hai una tabella "agenda" con un unico campo, "data" (varchar?)

    Ora, visto che tu hai dei campi che sono "nome", "cognome", "telefono" e "mail", perché la tabella "agenda" non ha queste colonne? Che senso ha salvare tutto come un'unica stringa? Non potrai fare query, non potrai farci nulla praticamente...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    ah xD

    questa è una classe che ho fatto momentaneamente solo per provare il recupero del vector,per questo non l'ho postata subito,sapevo che avrebbe generato confusione

    ad ogni modo il campo "data" è TEXT

    il senso del salvare tutto in un'unica stringa è perchè effettivamente sul programma finale non mi servirà eseguire query su questi dati ma semplicemente recuperarli tutti e inserirli in una jtable,mi è sembrato il metodo migliore

    come potrei fare per recuperare i valori per colonna anzichè tutti come vector ?

    grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.