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

    [JAVA] Come creo un metodo per fare un refresh ?

    Sto cercando di fare un programma che funge da console Sql, ho un layout BorderLayout, sopra inserisco le query,in mezzo un bottone con un ascoltatore, e sotto le tabelle dove verrà scritto quello che chiedo.

    Il problema che la prima query va, quando ne scrivo un'altra si sovrascrive alla vecchia.... e viene fuori un pasticcio....

    Se creassi un metodo che quando clicco una seconda volta mi fa un refresh e mi elimina tutti i campi sarei a posto, come si fa ?

  2. #2

  3. #3
    Mi sa che non è chiaro quello che chiedo

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    già, non è molto chiaro... hai provato comunque ad utilizzare il metodo validate sul container?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Originariamente inviato da Andrea1979
    già, non è molto chiaro... hai provato comunque ad utilizzare il metodo validate sul container?
    Si infatti ho proprio utilizzato validate() ma non funziona volevo chiedere se c'era qualcos'altro ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    puoi postare qualche riga di codice e una immagine dell'applicazione (o magari diverse, in diversi stati), così ci si può rendere conto meglio di quel che accade?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Con calma dopo ti posto tutto, buona serata

  8. #8
    Allora il programma è formato da 2 classi una che crea l'interfaccia grafica e l'altra è il vero programma ora te le copio tutte e 2

    Questa crea l'interfaccia:

    public abstract class VisualizzaQuery extends JFrame implements ActionListener{
    private JTextArea insQuery;
    private JButton inviaQuery;
    private JTable risQuery;

    public VisualizzaQuery(){
    super("Scrivimi una query, poi clicca invia per vedere il risultato");
    setSize(500,500);
    risQuery=new JTable(5,5);

    Container contenitore=getContentPane();
    contenitore.setLayout(new BorderLayout());

    insQuery=new JTextArea(10,20);
    contenitore.add (new JScrollPane(insQuery),BorderLayout.NORTH);

    inviaQuery=new JButton("invia Query");
    contenitore.add (inviaQuery,BorderLayout.CENTER);
    inviaQuery.addActionListener(this);
    }
    public String getInsQuery() {
    return insQuery.getText();
    }

    public void setInsQuery(String s) {
    insQuery.setText(s);
    }

    public JButton getInviaQuery() {
    return inviaQuery;
    }

    public void setInviaQuery(JButton inviaQuery) {
    this.inviaQuery = inviaQuery;
    }

    public JTable getRisQuery() {
    return risQuery;
    }
    //Questo metodo crea una nuova tabella ogni volta che si fa una query
    public void setRisQuery(Vector r,Vector c) {
    // risQuery = new JTable (r,c);
    }
    }

  9. #9
    Questo è il programma vero e proprio

    public class DisplayQueryResults extends VisualizzaQuery {
    private final String url="jdbcdbc:*******";
    private final String username="****";
    private final String password="****";

    private Connection connessione;
    private Statement statement; //inoltratore di query, serve a inviare le queri fra ODBC;
    private ResultSet resultset; // 2 classi, che fa ritornare i dati
    private ResultSetMetaData resultSetMetaData; // dati vari sulle query
    private JTable tab;

    public DisplayQueryResults(){
    super();

    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    connessione=DriverManager.getConnection(url,userna me,password);

    }
    catch (SQLException sqle){
    System.err.println("Connessione al DB fallita!");
    sqle.printStackTrace();
    }
    catch(ClassNotFoundException cnfe){
    System.err.println("caricamento del driver JDBC ODBC fallito!");
    }
    }


    public void actionPerformed(ActionEvent e){
    getTable();
    }

    public void getTable(){
    String str=getInsQuery();
    try {
    statement=connessione.createStatement(); //crea l'inoltratore di query
    resultset=statement.executeQuery(str); //inoltra la query e ritorna i risultati
    displayQuery(resultset);
    statement.close(); //chiude l'inoltratore di query

    } catch (SQLException sqle) {
    System.err.println("Creazione dell'inoltratore di query (Statement) fallita!");
    sqle.printStackTrace();
    }
    }

    // il metodo sotto va a lavorare con le tabelle del DB
    public void displayQuery(ResultSet rs) throws SQLException {
    boolean esisteRecord=rs.next(); //il metodo .next ritorna true se in quella posizione della tabella esiste un record
    if (esisteRecord==false){
    JOptionPane.showMessageDialog(this," La query è vuota","Risultato della query",JOptionPane.ERROR_MESSAGE);
    return;
    }

    Vector intestazioneColonne=new Vector(); //intestazione della tabella che vogliamo utilizzare
    Vector righe=new Vector(); // contiene i record della tabella
    try {
    resultSetMetaData=rs.getMetaData();
    for(int i=1;i <= resultSetMetaData.getColumnCount();i++)
    intestazioneColonne.addElement(resultSetMetaData.g etColumnName(i));
    do {
    righe.addElement(getRiga(rs,resultSetMetaData));
    } while (rs.next()==true);
    // visualizzo il DB e crea automaticamente le tabelle a seconda di quanti record ci sono
    setRisQuery(righe,intestazioneColonne);
    JTable tab=new JTable(righe,intestazioneColonne);
    getContentPane().add(tab,BorderLayout.SOUTH);
    validate();
    } catch (SQLException sqle){
    sqle.printStackTrace();
    }
    }


    public Vector getRiga(ResultSet rs, ResultSetMetaData rsmd) throws SQLException {
    Vector tmp=new Vector();

    for (int i=1;i <= rsmd.getColumnCount();i++)
    switch (rsmd.getColumnType(i)){
    case Types.VARCHAR:
    tmp.addElement(rs.getString(i));
    break;
    case Types.INTEGER:
    tmp.addElement(new Long(rs.getLong(i)));
    break;
    default:
    System.out.println("Tipo di dato non gestito"+rsmd.getColumnTypeName(i));
    }
    return tmp;

    }



    public static void main(String[] args) {

    final DisplayQueryResults finestra; // final crea una costante che punta subito alla finestra
    finestra = new DisplayQueryResults();
    finestra.setSize(600,600);
    finestra.setVisible(true);

    finestra.addWindowListener(new WindowAdapter() {
    public void WindowsClosing(WindowEvent e){
    System.exit(0);

    }
    });

    }
    }

  10. #10
    La prima query che chiedo di visualizzare va bene:



    La seconda viene sballata e sopra mi rimane quella di prima:



    Basterebbe un qualcosa che elimina la vecchia pulisce le tabelle e fa venire la nuova

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.