how to connect to PostgreSQL server to query the database names list
Ok. I have figured it out my self. I can use this string to connect to the server with jdbc driver.
jdbc:postgresql://localhost:5432/?
and can use this code snippet to get the database list
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(); } }
References: I used this dba stackexchange answer to get all the database list
AFAIK, that is beyond the capabilities of JDBC. I suggest you reconsider your approach to the bigger problem. Environment variables or a PROPERTIES file might be a solution.
import java.io.PrintStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;/** * Dev Parzival */public class TestingDatabase { static String driver="org.postgresql.Driver"; static String jdbc_url="jdbc:postgresql://localhost:5432/"; static String username="username",password="password"; static PrintStream out; static{ out=System.out; } public static void main(String $[]){ //SELECT datname FROM pg_database try{ Class.forName(driver); Connection connection= DriverManager.getConnection(jdbc_url,username,password); Statement statement=connection.createStatement(); ResultSet result=statement.executeQuery("SELECT datname FROM pg_database"); while(result.next()){ System.out.println(result.getString(1)); } connection.close(); }catch(Exception ex){ ex.printStackTrace(); } }}
Hope this might help someone somehow