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

    [Java] Problema con toString

    questo è il modello che rappresenta la tabella Book:
    codice:
    package com.mattepuffo.book;
    
    public class ModelBook {
    
        private String name;
        private String author;
        private String editor;
        private double price;
        private String isbn;
        private String note;
    
        public ModelBook(String name, String author, String editor, double price, String isbn, String note) {
            this.name = name;
            this.author = author;
            this.editor = editor;
            this.price = price;
            this.isbn = isbn;
            this.note = note;
        }
    
        public String getName() {
            return name;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public String getEditor() {
            return editor;
        }
    
        public double getPrice() {
            return price;
        }
    
        public String getIsbn() {
            return isbn;
        }
    
        public String getNote() {
            return note;
        }
    }
    poi nel metodo dove effettuo la query:
    codice:
        public void select() throws ClassNotFoundException, SQLException, IOException {
            ArrayList<ModelBook> book = new ArrayList<ModelBook>();
            conn = DBManager.getInstance().getConnection();
            CallableStatement cstmt = conn.prepareCall("{ CALL getBook() }");
            ResultSet rs = cstmt.executeQuery();
            while (rs.next()) {
    //            String name = rs.getString("name");
    //            String author = rs.getString("author_name");
    //            String editor = rs.getString("editor_name");
    //            double price = rs.getDouble("price");
    //            String isbn = rs.getString("isbn");
    //            String note = rs.getString("note");
    //            Object[] riga = {name, author, editor, price, isbn, note};
                book.add(new ModelBook(rs.getString("name"), rs.getString("author_name"), rs.getString("editor_name"), rs.getDouble("price"), rs.getString("isbn"), rs.getString("note")));
                ((DefaultTableModel) FormMain.getTable().getModel()).addRow(book.toArray());
            }
            rs.close();
            cstmt.close();
        }
    questo mi va a riempire un jtable con DefaultTableModel.
    i risultati sono tutti così:
    com.mattepuffo.book.ModelBook@25474e45
    so che devo ridefinire il metodo toString, ma il problema è che qui ho 5 String.
    come posso fare??

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    18
    Le devi concatenare....
    public toString(){
    return str1+" "+str2+" "+....;
    }
    sempre se ho capito bene quello che vuoi fare...

  3. #3
    Originariamente inviato da zetaenzo
    Le devi concatenare....
    public toString(){
    return str1+" "+str2+" "+....;
    }
    sempre se ho capito bene quello che vuoi fare...
    si ci avevo pensato però il problema è che ogni String rappresenta un campo preciso della tabella del db, e quindi una colonna specifica della jtable.
    così facendo li considero come unica stringa.

  4. #4
    Prova a fare queste modifiche:

    codice:
    ...
    ArrayList<String> book = new ArrayList<String>();
    ...
    
    // book.add(new ModelBook(rs.getString("name"), rs.getString("author_name"), rs.getString("editor_name"), rs.getDouble("price"), rs.getString("isbn"), rs.getString("note")));
    
    book.add(rs.getString("name"));
    book.add(rs.getString("author_name"));
    book.add(rs.getString("editor_name"));
    book.add(String.valueOf(rs.getDouble("price")));
    book.add(rs.getString("isbn"));
    book.add(rs.getString("note"));
    ...
    In pratica non utilizzare la classe ModelBook, ma popola l'ArrayList direttamente con i valori dei record estratti.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    codice:
                book.add(rs.getString("name"));
                book.add(rs.getString("author_name"));
                book.add(rs.getString("editor_name"));
                book.add(String.valueOf(rs.getDouble("price")));
                book.add(rs.getString("isbn"));
                book.add(rs.getString("note"));
                ((DefaultTableModel) FormMain.getTable().getModel()).addRow(book.toArray());
    un passo avanti.
    si vedono lo colonne fino a price compreso, ma tutti con lo stesso valore.
    quind ad esempio la colonna name riporta solo il primo nome ripetuto per tutti i record.
    invece isbn e note nn si riempiono.

  6. #6
    Devi istanziare l'ArrayList book all'interno del ciclo while in modo che ad ogni iterazione ne crei un nuovo oppure devi svuotarlo prima di riempirlo nuovamente.

    codice:
    ...
    while (rs.next()) {
       ArrayList<String> book = new ArrayList<String>();
       book.add(rs.getString("name"));
       book.add(rs.getString("author_name"));
       book.add(rs.getString("editor_name"));
       book.add(String.valueOf(rs.getDouble("price")));
       book.add(rs.getString("isbn"));
       book.add(rs.getString("note"));
       ((DefaultTableModel) FormMain.getTable().getModel()).addRow(book.toArray());
    }
    ...
    oppure:

    codice:
    ...
    ArrayList<String> book = new ArrayList<String>();
    while (rs.next()) {
       book.clear();
       book.add(rs.getString("name"));
       book.add(rs.getString("author_name"));
       book.add(rs.getString("editor_name"));
       book.add(String.valueOf(rs.getDouble("price")));
       book.add(rs.getString("isbn"));
       book.add(rs.getString("note"));
       ((DefaultTableModel) FormMain.getTable().getModel()).addRow(book.toArray());
    }
    ...
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    si ci sono arrivato da solo poi.
    li per li nn ci avevo pensato.
    sembra funzionare.
    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.