2009-08-18 22 views
5

Esta es la primera vez que uso java para acceder a bases de datos, así que probablemente tenga un error simple aquí, pero cuando obtengo mi conexión de una base de datos remota a la que tengo acceso, obtengo una conexión rechazadoJDBC- postgres, conexión rechazada

Aquí está el código en cuestión:

String url = "jdbc:postgresql:url.isformatted.like.this/database"; 

try { 
    conn = DriverManager.getConnection(url, "username", "password"); 
} catch (SQLException e) { 
    e.printStackTrace(); 
    System.exit(1); 
} 

(usuario/pass y la URL de base de datos eliminada por el bien de privacidad)

El problema no podría ser credenciales o la propia URL, como lo uso para iniciar sesión manualmente desde el mismo cuadro con éxito utilizando psql. Estoy pensando que es probablemente el formato de la URL, pero no he podido encontrar ningún ejemplo de psql siendo utilizados en una dirección remota (todos estaban anfitrión local Kinda cosas)

Respuesta

12

Según http://www.petefreitag.com/articles/jdbc_urls/ URL válidas son

 
jdbc:postgresql:database 
jdbc:postgresql://host/database 
jdbc:postgresql://host:port/database 
jdbc:postgresql://host:port/database?user=userName&password=pass 
jdbc:postgresql://host:port/database?charSet=LATIN1&compatible=7.2 

¿Tiene la // antes del host?

+0

No, no me gustó! (Vi el // en el localhost como ejemplos, pero pensé que se aplicaba solo a las bases de datos locales) ¡GRACIAS! – RyanCacophony

0

Acabo de ver el anuncio de mi código que se conecta a una base de datos PostgreSQL, y parece que esto:

DriverManager.getConnection(String.format("jdbc:postgresql://%s/%s", server, dbName), userName, password); 

Además, asegúrese de que está cargando el controlador de base de datos PostgreSQL antes de intentar conectarse:

Class.forName("org.postgresql.Driver"); 

y que la biblioteca PostgreSQL JDBC Jar está en su classpath.

1

Estoy de acuerdo con @ Jonathan acerca de tener la biblioteca tarro de PostgreSQL JDBC en CLASSPATH que: esto es lo que he usado:

private static final String TABLE_NAME = "tablenamegoeshere"; 
private static final String DRIVER = "org.postgresql.Driver"; 
private static final String URL = "jdbc:postgresql://url.for.database/DatabaseName"; 
private static final String USERNAME = "yourusername"; 
private static final String PASSWORD = "yourpassword"; 


private static Connection getConnection() throws Exception { 
    Class.forName(DRIVER); 
    Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 
    return conn; 
} 
Cuestiones relacionadas