我试图通过JDBC连接到托管在同一台计算机中的postgressql服务器,但是在控制台上看不到任何打印出来的内容,甚至看不到异常。下面是相同的代码
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才被捕获。
请帮我找出我犯的错误。提前谢谢你。
发布于 2022-08-01 02:25:37
我认为您可以检查您的端口号是否错误(默认端口号是5432,而不是5357),也可以使用netstat -ntlp检查计算机上打开的端口。
发布于 2022-08-01 06:57:43
原因
available.
当Postgresql服务器守护进程没有在服务器中运行时,它会触发连接拒绝的错误。同时,其他几个原因也可能触发此错误。
当您扫描端口1到65535时,大多数端口都会出现这种情况。这是一个信号,表明你应该移到下一个港口。
解决方案
下载最新的PostgreSQL JDBC驱动程序
要从PostgreSQL程序连接到PostgreSQL数据库服务器,您需要有PostgreSQL JDBC驱动程序。您可以通过下载页面在postgresql.org网站上下载最新版本的驱动程序。下载的文件是一个jar文件。您应该将其复制到一个特定的文件夹中,例如C:\demo\libs,以便您能够记住它的位置,并能够在以后将其添加到Java应用程序中。
然后,将PostgreSQL JDBC驱动程序jar文件添加到项目中。
要在Eclipse中导入jar文件,请遵循以下步骤。
单击project
H 125从所需文件夹H 226H 127单击并应用并确定<代码>H 228<代码>G 229
然后,您需要准备以下内容:
有关此信息,可以使用以下格式构造PostgreSQL JDBC连接字符串:
为了简化操作,我们可以定义App类的属性,用于存储连接字符串、用户和密码:
private final String url = "jdbc:postgresql://localhost:5432/databasename";
private final String user = "yourname";
private final String password = "yourpassword";代码应该如下所示
MainClass.java
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
netstat -a您将看到来自不同状态的所有活动连接,如下所示。
您需要编辑postgresql.conf (在您的数据目录中)以在那里设置新端口,然后使用服务控制面板或(作为管理员) net服务命令重新启动postgresql服务。
编辑postgresql.conf
这个文件通常位于/var/lib/pgsql/data/ in Linux或C:\PostgreSQL\data中。在这个文件中,我们将编辑"listen_address“和”端口“参数,使它们如下所示:
连接设置
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)步骤:
重启PostgreSQL
在此之后,我们需要重新启动PostgreSQL来激活更改。
在Windows上,您可以使用控制面板、->管理工具、->服务和查找名为postgres的服务,然后右击->属性- >stop,然后启动,重新启动PostgreSQL服务。
发布于 2022-08-01 13:45:05
连接尝试中的一致超时几乎总是防火墙问题。由于您正在连接本地主机,因此它必须是内部防火墙。你需要改变你的防火墙让53574通过。或者因为你知道5357通了,也许就在那里查一下吧。无论如何,53574是一个运行数据库服务器的奇怪端口。
假设您与Java连接并不重要,您可以从psql或psycopg2中获得相同的行为。
https://stackoverflow.com/questions/73188288
复制相似问题