PDA

View Full Version : [java] Gestire l'errore try/catch per operazioni di jdbc


cagnaluia
22-02-2008, 10:02
Ciao,

inizialmente uso try/catch... eseguo le operazioni all interno di try e quindi stampo su un label l'eventuale "difetto" generato dal catch...
Purtroppo.. stampo sul campo di testo, un informazione che io setto precedentemente, quindi non ho nessuna chiarezza su quel che è esattamente l'errore.

Vorrei quindi creare una textarea, dove scrivere via via una sorta di debug degli errori che si generano...

Ma come faccio per esempio in questa occasione a scrivere l'esatto errore?



private void riempiTabella(){
try {

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://ced-sql:1433;" + "databaseName=magazzinoricambi;user=sa;password=xxxxxx;";
Connection con = DriverManager.getConnection(connectionUrl);
st=con.createStatement();
r=st.executeQuery("SELECT * FROM dbo.tblMagazzinoRicambi");
int riga=0;
while(r.next())
{
for(int i=0; i<contaColonne(); i++)
{
jTable1.setValueAt(r.getString(i+1),riga,i);
}
riga++;
}
r.close();
}catch(Exception e) {jTextField2.setText("NO, QUALCOSA NON VA NEL RIEMPI TABELLA");};
}

Azizel
22-02-2008, 10:36
...}catch(Exception e) {
jTextField2.setText(e.getMessage()); // Prende solo il messaggio di errore -> Nota che è meglio pigliare lo stack trace..
e.printStackTrace(); // Stampa su std output lo stack trace
}

banryu79
22-02-2008, 13:36
utilizzando "catch" multipli dovresti catturare il tipo specifico di ogni eccezione, non solo la generica class Exception; questo se vuoi gestire messaggi/flussi di esecuzione diversi in base al tipo specifico di eccezione.

vladix
22-02-2008, 14:50
questo pezzo di codice gestisce tutte le possibili eccezioni a cui puoi andare incontro :eekk:

Connection conn = null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
} catch (IllegalAccessException e) {
//TODO
} catch (InstantiationException e) {
//TODO
} catch (ClassNotFoundException e) {
//TODO
}

Statement stmt = null;
ResultSet rs = null;
try{
conn = DriverManager.getConnection("jdbc:sqlserver://ced-sql:1433;" + "databaseName=magazzinoricambi;user=sa;password=xxxxxx;");
stmt=conn.createStatement();
rs=stmt.executeQuery("SELECT * FROM dbo.tblMagazzinoRicambi");
int riga=0;
while(rs.next()){
//TODO
}
} catch (SQLException e) {
// TODO
}