2014-05-07 5 views
7

Posso utilizzare jdbc:postgresql://host:port/database per connettersi a un database nel server postgresql utilizzando il driver jdbc.come connettersi al server PostgreSQL per interrogare l'elenco nomi di database

Ma volevo collegarmi al server Postgresql e trovare l'elenco dei database lì. quando ho usato jdbc:postgresql://localhost:5432, ho ricevuto un'eccezione chiamato

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432 

c'è qualche altro conducente o di qualsiasi metodo per ottenere una connessione al server senza conoscere i nomi dei database nel server e interrogare l'elenco database di lì?

+0

http://stackoverflow.com/ domande/16696688/no-suitable-driver-found-for-jdbcpostgresql-192-168-1-85432-nexentasearch – Jay

+0

@Jay: no. non è utile. Per favore leggi attentamente la domanda – lakshman

+0

Sembra che non sia possibile per ragioni di sicurezza. Controlla questo http://postgresql.1045698.n5.nabble.com/I-can-t-get-the-database-s-list-td2175993.html – Jay

risposta

10

Ok. L'ho capito da solo. Posso usare questa stringa per connettermi al server con il driver jdbc.

jdbc:postgresql://localhost:5432/?

e possono utilizzare questo frammento di codice per ottenere l'elenco di database

private void listDownAllDatabases() { 
     try { 
      PreparedStatement ps = connection 
        .prepareStatement("SELECT datname FROM pg_database WHERE datistemplate = false;"); 
      ResultSet rs = ps.executeQuery(); 
      while (rs.next()) { 
       System.out.println(rs.getString(1)); 
      } 
      rs.close(); 
      ps.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Riferimenti: Ho usato questo dba stackexchange answer per ottenere tutta la lista di database

+0

Un dettaglio importante, è che l'utente e la password non devono essere specificati. Altrimenti non può connettersi. –

0

AFAIK, che va oltre le capacità di JDBC. Ti suggerisco di riconsiderare il tuo approccio al problema più grande. Le variabili d'ambiente o un file PROPERTIES potrebbero essere una soluzione.

+0

puoi per favore più approfondire cosa significhi _Le variabili di ambiente o un file PROPERTIES potrebbero essere una soluzione._? – lakshman

+0

Spesso, il motivo per cui l'applicazione non conosce il database è perché l'applicazione viene eseguita in un ambiente diverso, come Dev, Test, UAT, Prod. Questo in genere coinvolge un server diverso e il database, ma l'idea è la stessa. L'idea è di descrivere il database (o il server) esterno all'applicazione in modo che il valore possa essere impostato, generalmente dagli amministratori. – Steve11235

+0

Non è al di là delle capacità di jdbc.please leggere la mia risposta. L'ho provato e funziona correttamente. – lakshman

Problemi correlati