2009-08-18 18 views
5

Dies ist das erste Mal mit Java für den Zugriff auf Datenbanken, so habe ich wahrscheinlich einen einfachen Fehler hier, aber wenn ich gehe, um meine Verbindung aus einer entfernten Datenbank abrufen, ich habe eine Verbindung verweigert.JDBC- Postgres, Verbindung verweigert

Hier ist der Code in Frage:

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

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

(user/pass und Datenbank-URL für die Privatsphäre willen entfernt)

Das Problem ist nicht Anmeldeinformationen oder die URL selbst sein könnte, wie ich es verwenden, um Melden Sie sich manuell mit psql von derselben Box aus an. Ich denke, es ist wahrscheinlich die Formatierung der URL, aber ich konnte keine Beispiele für psql finden auf einem Remote-Adresse verwendet werden (sie waren alle lokalen Host irgendwie Dinge)

Antwort

12

Nach http://www.petefreitag.com/articles/jdbc_urls/ gültig Urls sind

 
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 

Haben Sie das // vor dem Host?

+0

Nö, den Ball hielt ich! (Ich sah die // im localhost ein bisschen Beispiele, aber ich dachte, dass es nur für lokale Datenbanken galt) DANKE! – RyanCacophony

0

Ich sah nur ad mein Code, der zu einer PostgreSQL-Datenbank verbindet, und es sieht wie folgt aus:

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

Also, stellen Sie sicher, dass Sie die PostgreSQL-Datenbanktreiber sind geladen, bevor die Verbindung versuchen:

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

und dass sich die PostgreSQL JDBC Jar-Bibliothek in Ihrem Klassenpfad befindet.

1

würde ich mit @ Jonathan überein, die PostgreSQL JDBC jar Bibliothek darüber, dass auf Sie Classpath: hier ist das, was ich gebraucht:

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