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

    [JAVA] tabelle sql --> tabella java

    Avrei bisogno di una mano riguardo alla creazione di una tabella.

    Ho un programma gestionale in java che utilizza anche un database sql.

    In pratica, l'accesso e l'inserimento dei dati nel Database non da problemi, invece quando devo andare a stampare la tabella del DB in output mi da errore in esecuzione.

    brevemente ecco cosa ho fatto ma non funziona:
    accesso al DB, la tabella viene copiata riga per riga su una array di stringhe, questo poi viene spezzettato in oggni componente (il problema dovrebbe essere qui, almeno credo) e memorizzato in un array/matrice, per poi seguire una procedura di stampa in output con creazione grafica della tabellina.

    L'errore che mi da č in esecuzione.

    Che potrei fare? La funziona l'ho rigirata in mille modi ma da sempre errore in esecuzione...

    Sapete un metodo alternativo per stampare una tabella sql in java?

    Grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Non ci hai dato alcun elemento essenziale per poterti essere d'aiuto:

    1) Che errore ti dā in esecuzione?
    2) Un po' di codice per capire dove sta l'errore


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3

    Procedura ed errore

    Questa qui č la procedura che non funziona, che da problemi in esecuzione...vedrete una variabile Risul1 non presente perchč globale...


    public void VisualizzaVolo() {
    String NumeroVolo = NumVoloVT.getText();
    if (NumeroVolo.equals("")) new errCampiVuoti(this,false).show();

    int riga = 0;
    String[] nomiColonne = {"Numero Volo", "Arrivo", "Ora Partenza", "Giorno", "Mese"};
    Object[][] dati;
    String url = "jdbc:mysql://localhost/Aereoporto?user=root";
    String query2 = "SELECT * FROM Volo WHERE NumVolo= '"+ NumeroVolo + "'";
    try {
    Class.forName("com.mysql.jdbc.Driver").newInstance ();
    } catch(Exception e){System.out.println("Errore Driver");}
    try {
    Connection con = DriverManager.getConnection(url,"root","");
    Statement stm = con.createStatement();
    ResultSet rs = stm.executeQuery(query2);
    ResultSetMetaData rsmd = rs.getMetaData();
    int numColonne = rsmd.getColumnCount();
    rs.last();
    int numRighe = rs.getRow();
    rs.first();
    Risul1 = new String[numRighe];
    boolean prossimo = rs.first();
    while(prossimo) {
    Risul1[riga] = new String(rs.getString(1) + " - " + rs.getString(2) + " " + rs.getString(3) + " - " + rs.getString(4)+ " - " + rs.getString(5));
    riga++;
    prossimo = rs.next();
    }
    rs.close();
    stm.close();
    con.close();
    } catch(SQLException e) {System.out.println("Errore Database");}

    String[] datiTemp = Risul1;
    int numColonne1 = nomiColonne.length;
    int numRighe1 = datiTemp.length / numColonne1;
    int i;
    dati = new Object[numRighe1][numColonne1];
    for (i=0; i<datiTemp.length; i++) {
    dati[i/numColonne1][i%numColonne1] = datiTemp[i];
    }

    TabVis = new javax.swing.JTable(dati, nomiColonne);
    for (int z=0;z<nomiColonne.length;z++) {
    javax.swing.table.TableColumn Colonna = null;
    Colonna = TabVis.getColumnModel().getColumn(z);
    if (z==0) Colonna.setPreferredWidth(50);
    else if (z==3) Colonna.setPreferredWidth(100);
    else if (z==4) Colonna.setPreferredWidth(150);
    else if (z==6) Colonna.setPreferredWidth(30);
    else if (z==7) Colonna.setPreferredWidth(80);
    else if (z==8) Colonna.setPreferredWidth(130);

    }
    TabVis.setDragEnabled(false);
    ScrollVis = new javax.swing.JScrollPane(TabVis);
    getContentPane().add(ScrollVis, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, 900, 250));
    pack();

    }




    Questo č l'errore in esecuzione quando eseguo graficamente la procedura dal form che la realizza....


    Errore Database
    java.lang.NullPointerException
    at aeroporto.Aeroportoserver.VisualizzaVolo(Aeroporto server.java:729)
    at aeroporto.Aeroportoserver.visual(Aeroportoserver.j ava:354)
    at aeroporto.Aeroportoserver.access$300(Aeroportoserv er.java:20)
    at aeroporto.Aeroportoserver$4.actionPerformed(Aeropo rtoserver.java:250)
    at java.awt.Button.processActionEvent(Button.java:382 )
    at java.awt.Button.processEvent(Button.java:350)
    at java.awt.Component.dispatchEventImpl(Component.jav a:3615)
    at java.awt.Component.dispatchEvent(Component.java:34 77)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456)
    at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    guarda la riga 729

  5. #5
    la riga 729 č questa...

    int numRighe1 = datiTemp.length / numColonne1;

    Stavo pensando, č possibile che il conto non riesce per via che su datiTemp non viene data una grandezza?
    Potrebbe essere che durante l'assegnamento qualche riga sopra la cosa non riesca e la variabile rimanga vuota?

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    sicuramente datiTemp č null

  7. #7
    datiTemp č null...ho sbagliato l'assegnamento qualche riga sopra?

    ho effettuato delle piccole modifiche al codice...

    public void VisualizzaVolo() {
    String NumeroVoloo = NumVoloVT.getText();
    if (NumeroVoloo.equals("")) new errCampiVuoti(this,false).show();
    int NumeroVolo = Integer.parseInt(NumeroVoloo);

    int riga = 0;
    String[] nomiColonne = {"Numero Volo", "Arrivo", "Ora Partenza", "Giorno", "Mese"};
    Object[][] dati;
    String url = "jdbc:mysql://localhost/Aereoporto?user=root";
    String query2 = "SELECT * FROM Volo WHERE NumVolo=" + NumeroVolo ;
    try {
    Class.forName("com.mysql.jdbc.Driver").newInstance ();
    } catch(Exception e){System.out.println("Errore Driver");}
    try {
    Connection con = DriverManager.getConnection(url,"root","");
    Statement stm = con.createStatement();
    ResultSet rs = stm.executeQuery(query2);
    ResultSetMetaData rsmd = rs.getMetaData();
    int numColonne = rsmd.getColumnCount();
    rs.last();
    int numRighe = rs.getRow();
    rs.first();
    Risul1 = new String[numRighe];
    boolean prossimo = rs.first();
    while(prossimo) {
    Risul1[riga] = new String(rs.getString(1) + " - " + rs.getString(2) + " " + rs.getString(3) + " - " + rs.getString(4)+ " - " + rs.getString(5));
    riga++;
    prossimo = rs.next();
    }
    rs.close();
    stm.close();
    con.close();
    } catch(SQLException e) {System.out.println("Errore Database ");e.printStackTrace();}



    String[] datiTemp = Risul1;
    int numColonne1 = nomiColonne.length;
    int numRighe1 = datiTemp.length / numColonne1; //729
    int i;
    dati = new Object[numRighe1][numColonne1];
    for (i=0; i<datiTemp.length; i++) {
    dati[i/numColonne1][i%numColonne1] = datiTemp[i]; //733
    }

    TabVis = new javax.swing.JTable(dati, nomiColonne);
    for (int z=0;z<nomiColonne.length;z++) {
    javax.swing.table.TableColumn Colonna = null;
    Colonna = TabVis.getColumnModel().getColumn(z);
    if (z==0) Colonna.setPreferredWidth(50);
    else if (z==3) Colonna.setPreferredWidth(100);
    else if (z==4) Colonna.setPreferredWidth(150);
    else if (z==6) Colonna.setPreferredWidth(30);
    else if (z==7) Colonna.setPreferredWidth(80);
    else if (z==8) Colonna.setPreferredWidth(130);

    }
    TabVis.setDragEnabled(false);
    ScrollVis = new javax.swing.JScrollPane(TabVis);
    getContentPane().add(ScrollVis, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, 900, 250));
    pack();

    }

    ed ora mi da questo errore...

    java.lang.ArrayIndexOutOfBoundsException: 0
    at aeroporto.Aeroportoserver.VisualizzaVolo(Aeroporto server.java:733)
    at aeroporto.Aeroportoserver.visual(Aeroportoserver.j ava:354)
    at aeroporto.Aeroportoserver.access$300(Aeroportoserv er.java:20)
    at aeroporto.Aeroportoserver$4.actionPerformed(Aeropo rtoserver.java:250)
    at java.awt.Button.processActionEvent(Button.java:382 )
    at java.awt.Button.processEvent(Button.java:350)
    at java.awt.Component.dispatchEventImpl(Component.jav a:3615)
    at java.awt.Component.dispatchEvent(Component.java:34 77)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456)
    at java.awt.EventDispatchThread.pumpOneEventForHierar chy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:100)

    č sempre per via che datitemp č null?
    Come posso passare la stringa che viene fuori dalla query a datitemp in modo che si venga a creare la tabella?

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    credo che numColonne1 sia 0
    stampalo e guarda come crei l'array bidimensionale

  9. #9
    Grazie a chi mi ha aiutato...la procedura ora funziona correttamente, ora posterō il codice corretto in caso altri abbiano lo stesso problema.

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