[DOMANDA] Estrarre il nome della tabella da una query

  • Nuovo server! Potrebbero esserci ancora piccoli problemi legati alle disponibilità dei servizi del Forum. Scopri di più
#1
Buonasera a tutti,

una domanda, presumo semplice, ma non riesco a trovare una soluzione. Avrei la necessità di ottenere il nome della tabella che ho utilizzato per fare una specifica query, ma non trovo il modo per estrarre il nome della tabella.
Riporto il codice per maggiore chiarezza su ciò che vorrei fare:
Codice:
public static void viewTableStatement(Connection conn) {
        Statement stmt=null;
        String query="SELECT MATRICOLA, COGNOME, NOME "
                     +"FROM IMPIEGATO WHERE LIVELLO= '4' ";
        
        try {
            stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery(query);
            while(rs.next()) {
                String id=rs.getNString("MATRICOLA");
                String cognome=rs.getString("COGNOME");
                String nome=rs.getString("NOME");
                System.out.println(id +" \t "+ cognome +" \t "+ nome );
                System.out.println("\n***************************");
            
            }
           
             
        } catch (SQLException e) {

         System.out.println("esecuzione vietata "+e.getErrorCode()+ " "+e.getMessage());
         
        }


    }
Se per favore qualcuno ha qualche idea, perché io non saprei come gestirla. Ho provato con l'interfaccia ResultSetMetaData e DatabaseMetaData, ma senza ottenere quello che cercavo.
Grazie a tutti in anticipo per l'aiuto.
 
#3
Non capisco il senso della domanda: in nome della tabella è scritto nella query e si chiama IMPIEGATO;
altriment, se tu non consocessi il nome della tabella, come faresti ad estrarne i campi?
Innanzitutto grazie per la risposta. Hai ragione sul non senso della mia richiesta, ma ho semplificato una situazione più articolata. La stringa della query viene passata ad un metodo di un'altra classe che conterrà uno Statement, che leggerà la mia stringa eseguendo la query. Qualora avessi una qualsiasi exceptions, nel caso specifico una SQLException, verrà richiamato un altro metodo di un'altra classe, al quale verranno passati come parametri il codice di errore, la descrizione e la tabella della query passata, in modo da poter fare l'update dell'informazione. Quindi, se un unico soggetto a gestire queste classi\metodi, è a conoscenza dei nomi delle tabelle sulle quali fare l'update, mentre se sono più soggetti che gestiscono le classi e i metodi, riceveranno unicamente il parametro. Quindi, se riesco in qualche modo ad estrarre dalla query, passata ad uno Statement, il nome della tabella che ho usato nella Select, avrei risolto il mio problema.
Spero di aver fornito maggiori informazioni e spero che qualcuno mi possa dare un consiglio o qualche idea.
Grazie per l'aiuto.

Inviato da WAS-LX1A tramite App ufficiale di Tom\'s Hardware Italia Forum
 
#4
Potresti provare a inserire il nome tabella nella query attraverso una variabile, in modo da avere un parametro contenente il nome della tabella ed in caso di errore riuscire a recuperarlo.

String query="SELECT MATRICOLA, COGNOME, NOME "
+"FROM"+ NomeTabella +"WHERE LIVELLO= '4' ";
 
#6
Altra semplice soluzione: estrai le singole parole dalla stringa che contiene la query, il nome della tabella e' la parola seguente alla prima parola "FROM" (ricorda di fare il confronte ignorando minuscole/maiuscole). Esistono vari metodi per farlo.
 

Discussioni Simili