首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法通过JDBC连接postgresql

无法通过JDBC连接postgresql
EN

Stack Overflow用户
提问于 2022-08-01 02:17:47
回答 3查看 522关注 0票数 0

我试图通过JDBC连接到托管在同一台计算机中的postgressql服务器,但是在控制台上看不到任何打印出来的内容,甚至看不到异常。下面是相同的代码

代码语言:javascript
复制
import java.util.Scanner;    
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;

public class Driver {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Connection c = null;
        try {
            System.out.println("Before connection");  //This is getting printed
            c = DriverManager.getConnection("jdbc:postgresql://localhost:53574/","postgres","**");
            System.out.println("After connection");  //This is not getting printed
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

输入正确的密码后,短语Before connection正在打印,而After connection没有打印。我尝试更改端口号,直到异常Connection to localhost:5357 refused才被捕获。

请帮我找出我犯的错误。提前谢谢你。

EN

回答 3

Stack Overflow用户

发布于 2022-08-01 02:25:37

我认为您可以检查您的端口号是否错误(默认端口号是5432,而不是5357),也可以使用netstat -ntlp检查计算机上打开的端口。

票数 0
EN

Stack Overflow用户

发布于 2022-08-01 06:57:43

原因

available.

  • Nothing不是
  • 驱动程序,而是在监听端口,您是
  • ,Postgresql不是,不是监听TCP/IP,connections.
    • Postgresql监听的端口与您正在连接的端口不同。

当Postgresql服务器守护进程没有在服务器中运行时,它会触发连接拒绝的错误。同时,其他几个原因也可能触发此错误。

当您扫描端口1到65535时,大多数端口都会出现这种情况。这是一个信号,表明你应该移到下一个港口。

解决方案

下载最新的PostgreSQL JDBC驱动程序

要从PostgreSQL程序连接到PostgreSQL数据库服务器,您需要有PostgreSQL JDBC驱动程序。您可以通过下载页面在postgresql.org网站上下载最新版本的驱动程序。下载的文件是一个jar文件。您应该将其复制到一个特定的文件夹中,例如C:\demo\libs,以便您能够记住它的位置,并能够在以后将其添加到Java应用程序中。

然后,将PostgreSQL JDBC驱动程序jar文件添加到项目中。

要在Eclipse中导入jar文件,请遵循以下步骤。

单击project

  • Select

  • Path

  • 右键单击Configure Path

  • 并选择Add

H 125从所需文件夹H 226H 127单击并应用并确定<代码>H 228<代码>G 229

然后,您需要准备以下内容:

  1. PostgreSQL数据库服务器的地址
  2. 数据库名
  3. 您将用来连接到数据库的帐户的用户名和密码。

有关此信息,可以使用以下格式构造PostgreSQL JDBC连接字符串:

为了简化操作,我们可以定义App类的属性,用于存储连接字符串、用户和密码:

代码语言:javascript
复制
private final String url = "jdbc:postgresql://localhost:5432/databasename";
private final String user = "yourname";
private final String password = "yourpassword";

代码应该如下所示

MainClass.java

代码语言:javascript
复制
package com.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MainClass {

private final String url = "jdbc:postgresql://localhost:5432/databasename";
private final String user = "yourname";
private final String password = "yourpassword";

public Connection connect() {
    Connection conn = null;
    try {
        conn = DriverManager.getConnection(url, user, password);
        System.out.println("Connected to the PostgreSQL server successfully.");
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }

    return conn;
}

public static void main(String[] args) {
    App app = new App();
    app.connect();
}

}

运行端口扫描

确保端口是打开的。显示所有连接

打开cmd并输入以下命令,然后按enter

代码语言:javascript
复制
netstat -a

您将看到来自不同状态的所有活动连接,如下所示。

您需要编辑postgresql.conf (在您的数据目录中)以在那里设置新端口,然后使用服务控制面板或(作为管理员) net服务命令重新启动postgresql服务。

编辑postgresql.conf

这个文件通常位于/var/lib/pgsql/data/ in Linux或C:\PostgreSQL\data中。在这个文件中,我们将编辑"listen_address“和”端口“参数,使它们如下所示:

连接设置

代码语言:javascript
复制
listen_addresses = '0.0.0.0'        # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)
port = 5432             # (change requires restart)

步骤:

  1. 转到..\ postgresql \9.0\data,并以文本postgresql.conf打开端口参数.eg的文件postgresql.conf: port =5433
  2. 编辑此文件到您的端口号。
  3. 运行services.msc类型并重新启动postgresql服务。

重启PostgreSQL

在此之后,我们需要重新启动PostgreSQL来激活更改。

在Windows上,您可以使用控制面板、->管理工具、->服务和查找名为postgres的服务,然后右击->属性- >stop,然后启动,重新启动PostgreSQL服务。

票数 0
EN

Stack Overflow用户

发布于 2022-08-01 13:45:05

连接尝试中的一致超时几乎总是防火墙问题。由于您正在连接本地主机,因此它必须是内部防火墙。你需要改变你的防火墙让53574通过。或者因为你知道5357通了,也许就在那里查一下吧。无论如何,53574是一个运行数据库服务器的奇怪端口。

假设您与Java连接并不重要,您可以从psql或psycopg2中获得相同的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73188288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档