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

    Inserimento query in una tabella

    Salve, ho un dubbio per quanto riguarda l'inserimento di una query su una tabella.

    codice:
      private String[] columnNames = {"First Name",
                                            "Last Name"};
                                            
            private Object[][] data = {
            {"Kathy", "Smith"}
            };
    
            public int getColumnCount() {
                return columnNames.length;
            }
    
            public int getRowCount() {
                return data.length;
            }
    
            public String getColumnName(int col) {
                return columnNames[col];
            }
    
            public Object getValueAt(int row, int col) {
                return data[row][col];
            }
    
            /*
             * JTable uses this method to determine the default renderer/
             * editor for each cell.  If we didn't implement this method,
             * then the last column would contain text ("true"/"false"),
             * rather than a check box.
             */
            public Class getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            }
    
            /*
             * Don't need to implement this method unless your table's
             * editable.
             */
            public boolean isCellEditable(int row, int col) {
                //Note that the data/cell address is constant,
                //no matter where the cell appears onscreen.
                
                    return true;
                
            }
    
            /*
             * Don't need to implement this method unless your table's
             * data can change.
             */
            public void setValueAt(Object value, int row, int col) {
                if (DEBUG) {
                    System.out.println("Setting value at " + row + "," + col
                                       + " to " + value
                                       + " (an instance of "
                                       + value.getClass() + ")");
                }
    
                data[row][col] = value;
                fireTableCellUpdated(row, col);
    
                if (DEBUG) {
                    System.out.println("New value of data:");
                    printDebugData();
                }
            }
    
            private void printDebugData() {
                int numRows = getRowCount();
                int numCols = getColumnCount();
    
                for (int i=0; i < numRows; i++) {
                    System.out.print("    row " + i + ":");
                    for (int j=0; j < numCols; j++) {
                        System.out.print("  " + data[i][j]);
                    }
                    System.out.println();
                }
                System.out.println("--------------------------");
            }
        }
    
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("TableDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            //Create and set up the content pane.
            Prova20 newContentPane = new Prova20();
            newContentPane.setOpaque(true); //content panes must be opaque
            frame.setContentPane(newContentPane);
    
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String[] args)    {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            
            
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                           
                    createAndShowGUI();
                }
            });
        }
    }
    Questo è quello che ho trovato sulla guida oracle. Ora ho esteso il seguente codice con il seguente metodo

    codice:
    public String insertable(String Nometabella){
            Connection conn = null;
            Statement stmt = null;        
          
           try{
           //STEP 2: Register JDBC driver
           Class.forName("com.mysql.jdbc.Driver");
    
           //STEP 3: Open a connection
           System.out.println("Connecting to database...");
           conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root","");
    
           //STEP 4: Execute a query
           System.out.println("Creating database...");
           stmt = conn.createStatement();
          
          
          String sql = "USE STUDENTS;";
                
          stmt.executeUpdate(sql);
          
                    
    
    String queryfinal="SELECT* FROM ";
    
    String querytabella=queryfinal.concat(Nometabella).concat(";");
    
    
    System.out.println(""+querytabella);
    
    ResultSet rs = stmt.executeQuery(querytabella);
    
    
    Vector<String> temp = new Vector<>();
    
    Prova20 newdata=new Prova20();
      
         while (rs.next()) {
    
             
             
            
               Nome2=rs.getString("Nome");
               Cognome2=rs.getString("Cognome");
             
    
             
    temp.addElement(Nome2);
             
    Object [][]data = {
        {Nome2},{Cognome2} 
                };
    
    datafinal=data;
    
    System.out.println("oggetto"+newdata.datafinal);
         
    
         
    
    
    
    
    
    
    
    
    
    
    
            
    //Create and set up the window.
             
             
             
              
                
                 
                   
                   
                
    
           
    
          }
        
          
          
         
    
       
         System.out.println("Database created successfully...");
       }catch(SQLException se){
          //Handle errors for JDBC
          se.printStackTrace();
       }catch(Exception e){
          //Handle errors for Class.forName
          e.printStackTrace();
       }finally{
          //finally block used to close resources
          try{
             if(stmt!=null)
                stmt.close();
          }catch(SQLException se2){
          }// nothing we can do
          try{
             if(conn!=null)
                conn.close();
          }catch(SQLException se){
             se.printStackTrace();
          }//end finally try
       }//end try
       System.out.println("Goodbye!");  
        
       
       return Nometabella;
       
        }
    Ora voglio sapere come passare il contenuto di datafinal sulla tabella.

    il fatto e che sostituendo a posto di data datafinal mi dà errore.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    codice:
    Object [][]data = {
        {Nome2},{Cognome2} 
                };
    Prima di tutto presta attenzione al fatto che questo codice qui è dentro il while di scansione del result-set ..... e così non ha senso. Non devi creare un Object[][] ad ogni record.
    Inoltre, sempre da quello che si vede qui, hai sì creato un array bidimensionale ma di 2 righe e 1 colonna, cioè il nome (riga 1, una sola colonna) e cognome (riga 2, una sola colonna) e .... ho la vaga sensazione che non è quello che ti serve e volevi.

    Quindi prima di partire "in quarta" con il resto, cerca di ragionare meglio sulla creazione dell'array bidimensionale. E se ti risulta scomodo, usa allora un Vector di Vector di Object, che è anche appropriato per DefaultTableModel.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Prima di tutto presta attenzione al fatto che questo codice qui è dentro il while di scansione del result-set ..... e così non ha senso. Non devi creare un Object[][] ad ogni record.
    Inoltre, sempre da quello che si vede qui, hai sì creato un array bidimensionale ma di 2 righe e 1 colonna, cioè il nome (riga 1, una sola colonna) e cognome (riga 2, una sola colonna) e .... ho la vaga sensazione che non è quello che ti serve e volevi.

    Quindi prima di partire "in quarta" con il resto, cerca di ragionare meglio sulla creazione dell'array bidimensionale. E se ti risulta scomodo, usa allora un Vector di Vector di Object, che è anche appropriato per DefaultTableModel.
    Allora inanzitutto ho capito quale il problema e che l'oggetto data si sovrascrive ogni volta, ho provato ad a mettere fuori l'oggetto data. ma niente. Come posso fare?



    codice:
        while (rs.next()) {
    
            
             
              Nome2=rs.getString("Nome");
              Cognome2=rs.getString("Cognome");
             
                  
    
    
    
    
             
             
    //Create and set up the window.
             
             
             
              
                
                 
                   
                   
                
    
           
    
          }
         
         Object [][]data = {
        {Nome2,Cognome2},
                };
         
         
                 String nomecolonna[]={"Nome","Cognome"};
    
          JTable table = new JTable(data,nomecolonna);
    
    NewJFrame frame=new NewJFrame();
    
    Container cp = frame.getContentPane();
    
    cp.setLayout(new BorderLayout());
    cp.add(table.getTableHeader(), BorderLayout.PAGE_START);
    cp.add(table, BorderLayout.CENTER);
    
    
    
    
    
    
    
    frame.setVisible(true);


    codice:
    
    while (rs.next()) {
    
            
           
              Nome2[numerorighe]=rs.getString("Nome");
              Cognome2[numerorighe]=rs.getString("Cognome");
             
    numerorighe++;
    
    
    
             
             
    //Create and set up the window.
             
             
             
              
                
                 
                   
                   
                
    
           
    
          }
    Ho provato così ma niente
    Ultima modifica di deleted_2024.08.22; 14-04-2014 a 01:08

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    Allora inanzitutto ho capito quale il problema e che l'oggetto data si sovrascrive ogni volta, ho provato ad a mettere fuori l'oggetto data. ma niente. Come posso fare?
    Il punto è che per poter istanziare correttamente un Object[][] dovresti sapere a priori quante righe avrai nel result-set. Questo è anche possibile (es. con una query di "count" ad esempio) ma allunga un po', oltre al fatto che potrebbe non essere la soluzione migliore.

    Nel tuo caso ti conviene:
    1) Usare un List<Object[]> da cui poi ottieni alla fine un Object[][]
    oppure
    2) Usare un Vector di Vector di Object.

    Entrambe le strutture sono appropriate per JTable o direttamente per DefaultTableModel.

    I due casi con codice "abbozzato" e minimale (lo completi tu ).

    1)
    codice:
    List<Object[]> listRighe = new ArrayList<Object[]>();
    
    while (rs.next()) {
        String nome = rs.getString("Nome");
        String cognome = rs.getString("Cognome");
    
        listRighe.add(new Object[] { nome, cognome });
    }
    
    Object[][] datiTabella = listRighe.toArray(new Object[0][]);

    2)
    codice:
    Vector datiTabella = new Vector();
    
    while (rs.next()) {
        String nome = rs.getString("Nome");
        String cognome = rs.getString("Cognome");
    
        Vector riga = new Vector();
        riga.add(nome);
        riga.add(cognome);
    
        datiTabella.add(riga);
    }

    In entrambi i casi, alla fine hai 'datiTabella' con tutti i dati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Il punto è che per poter istanziare correttamente un Object[][] dovresti sapere a priori quante righe avrai nel result-set. Questo è anche possibile (es. con una query di "count" ad esempio) ma allunga un po', oltre al fatto che potrebbe non essere la soluzione migliore.

    Nel tuo caso ti conviene:
    1) Usare un List<Object[]> da cui poi ottieni alla fine un Object[][]
    oppure
    2) Usare un Vector di Vector di Object.

    Entrambe le strutture sono appropriate per JTable o direttamente per DefaultTableModel.

    I due casi con codice "abbozzato" e minimale (lo completi tu ).

    1)
    codice:
    List<Object[]> listRighe = new ArrayList<Object[]>();
    
    while (rs.next()) {
        String nome = rs.getString("Nome");
        String cognome = rs.getString("Cognome");
    
        listRighe.add(new Object[] { nome, cognome });
    }
    
    Object[][] datiTabella = listRighe.toArray(new Object[0][]);

    2)
    codice:
    Vector datiTabella = new Vector();
    
    while (rs.next()) {
        String nome = rs.getString("Nome");
        String cognome = rs.getString("Cognome");
    
        Vector riga = new Vector();
        riga.add(nome);
        riga.add(cognome);
    
        datiTabella.add(riga);
    }

    In entrambi i casi, alla fine hai 'datiTabella' con tutti i dati.
    codice:
    List<Object[]> listRighe = new ArrayList<Object[]>();
    ;

    Inserendo questo pezzetto di codice mi dà errore su List,come mai?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    codice:
    List<Object[]> listRighe = new ArrayList<Object[]>();
    ;

    Inserendo questo pezzetto di codice mi dà errore su List,come mai?
    Richiede la compilazione almeno con Java 5.
    E List / ArrayList sono nel package java.util, quindi vanno importati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.