Java应用程序:连接到PostgreSQL数据库

问题描述:

我正在尝试连接到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

您所使用的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

尝试这段代码:

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