2014-12-05 74 views
0

我正在嘗試連接到Postgres SQL數據庫。通常情況下,我可以通過簡單地將鏈路連接:Java應用程序:連接到PostgreSQL數據庫

test.ischool.testU.edu 

哪裏連接到phpPgAdmin的輸入我的憑據,然後我可以連接到我的數據庫,TESTDB,從身邊選擇它。

這裏是我相關的Java代碼:

try { 
     Class.forName("org.postgresql.Driver"); 
    } catch (ClassNotFoundException e1) { 
     e1.printStackTrace(); 
    } 

    String url = "jdbc:postgresql://test.ischool.testU.edu:5432/testDB"; 
    String user = "testuser"; 
    String pass = "testpassword"; 
    Connection db = null; 
    try { 
     db = DriverManager.getConnection(url,user,pass); 
    } catch (SQLException e1) { 
     e1.printStackTrace(); 
    } 

我收到以下錯誤:

org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port    are correct and that the postmaster is accepting TCP/IP connections. 

我敢肯定,我做錯了什麼。假設我的代碼是正確的(我敢肯定情況並非如此),要連接到數據庫,是否需要在遠程目錄中有我的.jar文件,或者我可以在本地運行它?這有什麼不同嗎?

我已成功連接到使用下面的Python代碼我的數據庫(此代碼插入到遠程直接從那裏運行):

conn = psycopg2.connect("dbname=testDB user=testuser password=testpassword") 
+0

您提到您直接連接使用* *的Python代碼在服務器上。你能通過任何方法連接 - 例如* psql *客戶端 - 通過你想運行Java代碼的客戶端服務器嗎?聽起來像這可能是一個網絡問題,或者* Postgres *服務器配置問題,不會接受你連接的IP。 – khampson 2014-12-06 00:50:20

+0

我可以使用phpPgAdmin進行連接。我的老師提到「它必須在課程數據庫服務器上運行,客戶端應用程序將無法連接到數據庫」。我相信這就是爲什麼我無法讓我的代碼工作的原因。例如,我可以使用putty並鍵入「python test.py」,它將連接到數據庫並執行任何操作。但是,我不確定如何以相同的方式運行Java .jar文件,即使它已經上傳到遠程目錄。 – 2014-12-06 01:09:39

+0

鑑於教師的侷限性,正如@BohuslavBurghardt在他的一篇評論中提到的那樣,你必須在服務器上運行它。有很多種方式通過命令行來運行* jar *的內容,但這主要取決於代碼的結構。我會建議從[本教程]開始(https://docs.oracle.com/javase/tutorial/deployment/jar/run.html)。 – khampson 2014-12-06 01:15:22

回答

0

您所使用的JDBC URL是MySQL:

jdbc:mysql://test.ischool.testU.edu:5432/testDB 

一個使用PostgreSQL的:

jdbc:postgresql://test.ischool.testU.edu:5432/testDB 

如果更改此不彼lp請發佈你正在得到的確切的錯誤。

+0

哎呀!在嘗試其他人的解決方案時,我複製了一些代碼並忘記更改它。儘管如此,即使這樣,我也會收到錯誤:org.postgresql.util.PSQLException:連接被拒絕。檢查主機名和端口是否正確,並且postmaster正在接受TCP/IP連接。 – 2014-12-05 23:16:33

+0

你說你使用遠程運行的Python代碼成功連接到數據庫(它是否與數據庫運行在同一臺服務器上)?另外,當你連接到phpPgAdmin時,它可能運行在與DB相同的服務器上,這導致我得出PostgreSQL服務器未配置爲接受遠程連接的結論。在這種情況下,除了像Java程序那樣遠程運行Java程序以外,你無能爲力。 – 2014-12-05 23:26:45

0

嘗試這段代碼:

String url = "jdbc:postgresql://localhost/YOURSCHEMA?user=YOURUSER&password=YOURPWD"; 

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

Connection con = DriverManager.getConnection(url);` 
+0

我爲我的模式放了什麼? o-o對不起,我不擅長這個。 – 2014-12-05 23:47:41

+0

沒問題,你的數據庫名稱:) – aurelius 2014-12-05 23:48:57

+0

Alrighty。我假設我需要在數據庫的同一臺服務器上運行它?如果是這樣,你會有關於如何從網站遠程運行jar文件的提示嗎? – 2014-12-05 23:58:11

相關問題