Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

java tabelle

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

java tabelle

Postdi focaska » 01/07/05 14:49

Mi serve un piccolo aiuto con il java...su una procedura.

In pratica devo portare in output una tabella sql.

Le varie connessioni con il database sono funzionanti, e gli inserimenti nel database funzionano, però non riesco a portare fuori i dati che ho nelle tabelle e stamparli in output.

Ho provato a prendere le varie righe della tabella e copiarle dentro array, per poi realizzare quindi una matrice-tabella, ma mi da sempre lo stesso errore, come se non combaciassero le grandezze, come se la tabella fosse più grande dello spazio che gli viene assegnato. (scusate se non sono chiaro...).

Sono sotto linux, uso Netbeans ed il protocollo per lo scambio di dati è il soap (non penso vi serva sapere queste cose, ma io ce le metto uguale per sicurezza) .

Sono poche righe di codice ma mi stanno facendo sudare come un matto...qualcuno sa come aiutarmi?
focaska
Newbie
 
Post: 5
Iscritto il: 01/07/05 14:37

Sponsor
 

Postdi focaska » 01/07/05 17:53

Questa è la procedura e l'errore che mi arriva

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();

}


ERRORE IN ESECUZIONE, QUANDO LANCIO LA FUNZIONE DAL FORM

Errore Database
java.lang.NullPointerException
at aeroporto.Aeroportoserver.VisualizzaVolo(Aeroportoserver.java:729)
at aeroporto.Aeroportoserver.visual(Aeroportoserver.java:354)
at aeroporto.Aeroportoserver.access$300(Aeroportoserver.java:20)
at aeroporto.Aeroportoserver$4.actionPerformed(Aeroportoserver.java:250)
at java.awt.Button.processActionEvent(Button.java:382)
at java.awt.Button.processEvent(Button.java:350)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
focaska
Newbie
 
Post: 5
Iscritto il: 01/07/05 14:37

Postdi pjfry » 01/07/05 18:00

cosa c'è alla riga 729?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi focaska » 02/07/05 15:38

Alla riga 729 c'è:

int numRighe1 = datiTemp.length / numColonne1;
focaska
Newbie
 
Post: 5
Iscritto il: 01/07/05 14:37

Postdi pjfry » 02/07/05 16:30

aahhhh, non avevo visto 'errore database' :aaah
c'è una eccezione sql, per questo poi Risul1 risulta null...
modifica
Codice: Seleziona tutto
catch(SQLException e) {System.out.println("Errore Database");}

aggiungendo e.printStackTrace(); tra le graffe

questo per capire l'errore... in generale dovresti fare in modo che se c'è quella eccezione il programma termini lì invece di andare avanti senza dati
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi archimede » 03/07/05 08:30

focaska ha scritto:String query2 = "SELECT * FROM Volo WHERE NumVolo= '"+ NumeroVolo + "'";
Se NumVolo è numerico questo è sbagliato:
Codice: Seleziona tutto
String query2 = "SELECT * FROM Volo WHERE NumVolo="+ NumeroVolo;
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi focaska » 03/07/05 14:20

In effetti si, il campo del database numero del volo è un intero...ed io gli passavo una stringa, ho fatto il casting da stringa a intero...così non dovrebbe dare problemi, dico bene?

Ho inserivo anche il metodo dello stack...

Dopo la modifica del 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 vecchio errore
int i;
dati = new Object[numRighe1][numColonne1];
for (i=0; i<datiTemp.length; i++) {
dati[i/numColonne1][i%numColonne1] = datiTemp[i]; //733 nuovo errore
}

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();

}

In compilazione tutto ok, in esecuzione cambio dell'errore...

java.lang.ArrayIndexOutOfBoundsException: 0
at aeroporto.Aeroportoserver.VisualizzaVolo(Aeroportoserver.java:733)
at aeroporto.Aeroportoserver.visual(Aeroportoserver.java:354)
at aeroporto.Aeroportoserver.access$300(Aeroportoserver.java:20)
at aeroporto.Aeroportoserver$4.actionPerformed(Aeroportoserver.java:250)
at java.awt.Button.processActionEvent(Button.java:382)
at java.awt.Button.processEvent(Button.java:350)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
focaska
Newbie
 
Post: 5
Iscritto il: 01/07/05 14:37

Postdi pjfry » 03/07/05 16:02

metti delle system.out appena dopo la query per assicurarti che ritorni qualche risultato, l'array pare vuoto :-?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi archimede » 05/07/05 08:02

focaska ha scritto:In effetti si, il campo del database numero del volo è un intero...ed io gli passavo una stringa, ho fatto il casting da stringa a intero...così non dovrebbe dare problemi, dico bene?

...

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

...

String query2 = "SELECT * FROM Volo WHERE NumVolo=" + NumeroVolo;
Premetto che le mie conoscenze di Java si approssimano allo zero.

query2 è (deve essere) una stringa: non so se Java fa il casting automaticamente da intero a stringa, ma anche se lo fa non ne vedo il bisogno. Hai una stringa (restituita dalla getText) che contiene il # del volo: appiccicala a query2 e sei a posto (a meno che tale stringa non contenga caratteri diversi dai numeri).

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi focaska » 05/07/05 08:42

Grazie dei consigli! veramente! Ora pare tutto risolto, riesco a stampare in output le tabelle...
Per correttezza lascerò la procedura giusta nel caso altri presentino lo stesso problema...
focaska
Newbie
 
Post: 5
Iscritto il: 01/07/05 14:37


Torna a Programmazione


Topic correlati a "java tabelle":

web scraping in java
Autore: templare77
Forum: Programmazione
Risposte: 1

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti