2014-05-07 57 views
7

我可以使用jdbc:postgresql://host:port/database來使用jdbc驅動程序連接到postgresql服務器中的數據庫。如何連接到PostgreSQL服務器來查詢數據庫名稱列表

但我想連接到postgresql服務器,並在那裏找到數據庫列表。當我用jdbc:postgresql://localhost:5432,我叫

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

是否有任何其他驅動程序或獲取到服務器的連接不知道在服務器上的數據庫名稱和查詢數據庫表有什麼方法例外嗎?

+0

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

+0

@Jay:no。這沒有幫助。請仔細閱讀問題 – lakshman

+0

看起來這是不可能的,出於安全原因。檢查這個http://postgresql.1045698.n5.nabble.com/I-can-t-get-the-database-s-list-td2175993.html – Jay

回答

10

好的。我已經明白了我的自我。我可以使用此字符串通過jdbc驅動程序連接到服務器。

jdbc:postgresql://localhost:5432/?

,並可以使用此代碼段來獲取數據庫列表

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

參考文獻:我用這個dba stackexchange answer讓所有的數據庫列表

+0

一個重要的細節是,不能指定用戶和密碼。否則它不能連接。 –

0

AFAIK,這超出了JDBC的功能。我建議你重新考慮你解決更大問題的方法。環境變量或PROPERTIES文件可能是一個解決方案。

+0

可以請你更詳細說明這意味着什麼_環境變量或一個PROPERTIES文件可能是一個解決方案。 – lakshman

+0

通常,應用程序不知道數據庫的原因是因爲應用程序運行在不同的環境中,如Dev,Test,UAT,Prod。這通常涉及一個不同的服務器以及數據庫,但這個想法是相同的。其思想是描述應用程序外部的數據庫(或服務器),以便通常由管理員設置值。 – Steve11235

+0

它不超出jdbc.please的能力閱讀我的答案。我已經測試過它,它工作正常。 – lakshman

相關問題