質問

I can use jdbc:postgresql://host:port/database to connect to a database in postgresql server using jdbc driver.

But I wanted to connect to the postgresql server and find the database list there. when I used jdbc:postgresql://localhost:5432, I got an exception called

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

is there any other driver or any method to get a connection to the server without knowing the database names in server and query the database list there?

役に立ちましたか?

解決

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top