Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PostgreSQL:连接失败时抑制错误输出_Postgresql_Jdbc - Fatal编程技术网

Java PostgreSQL:连接失败时抑制错误输出

Java PostgreSQL:连接失败时抑制错误输出,postgresql,jdbc,Postgresql,Jdbc,我正在用java连接postgreSQL数据库 用户在命令行中输入用户名和密码,然后我测试连接。我在它周围放了一个try-catch块,但是当连接失败时,它仍然会打印一条错误消息。我不想让用户看到这条消息,我只想自己处理错误,这通常可以通过try-catch构造实现。然而,在这种特殊情况下,消息还是会被打印出来。我如何在此处抑制该消息 相关代码: import java.sql.*; public class ChessDatabase { private Connection ch

我正在用java连接postgreSQL数据库

用户在命令行中输入用户名和密码,然后我测试连接。我在它周围放了一个try-catch块,但是当连接失败时,它仍然会打印一条错误消息。我不想让用户看到这条消息,我只想自己处理错误,这通常可以通过try-catch构造实现。然而,在这种特殊情况下,消息还是会被打印出来。我如何在此处抑制该消息

相关代码:

import java.sql.*;

public class ChessDatabase {

    private Connection chessDB;
    private String username;
    private String password;

    ChessDatabase(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public boolean isConnected() {
        try {
            chessDB = DriverManager.getConnection("jdbc:postgresql://[...]", username, password);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}
错误消息:

Jun 25, 2018 3:38:24 PM org.postgresql.core.v3.ConnectionFactoryImpl log
WARNING: SQLException occurred while connecting to [...]
org.postgresql.util.PSQLException: FATAL: PAM authentication failed for user "[...]"
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:452)
    at org.postgresql.Driver.connect(Driver.java:254)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at ChessDatabase.isConnected(ChessDatabase.java:35)
    [...]
Jun 25, 2018 3:38:24 PM org.postgresql.Driver connect
SEVERE: Connection error: 
org.postgresql.util.PSQLException: FATAL: PAM authentication failed for user "[...]"
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:452)
    at org.postgresql.Driver.connect(Driver.java:254)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at ChessDatabase.isConnected(ChessDatabase.java:35)
    [...]
2018年6月25日下午3:38:24 org.postgresql.core.v3.ConnectionFactoryImpl日志
警告:连接到[…]时发生SQLException
org.postgresql.util.PSQLException:致命:用户“[…]”的PAM身份验证失败
位于org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
位于org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
位于org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
位于org.postgresql.jdbc.PgConnection.(PgConnection.java:195)
位于org.postgresql.Driver.makeConnection(Driver.java:452)
位于org.postgresql.Driver.connect(Driver.java:254)
位于java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
位于java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
在ChessDatabase.isConnected(ChessDatabase.java:35)
[...]
2018年6月25日下午3:38:24 org.postgresql.Driver connect
严重:连接错误:
org.postgresql.util.PSQLException:致命:用户“[…]”的PAM身份验证失败
位于org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
位于org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
位于org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
位于org.postgresql.jdbc.PgConnection.(PgConnection.java:195)
位于org.postgresql.Driver.makeConnection(Driver.java:452)
位于org.postgresql.Driver.connect(Driver.java:254)
位于java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
位于java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
在ChessDatabase.isConnected(ChessDatabase.java:35)
[...]

PS:只是为了澄清一下,如果用户名和密码正确,连接可以工作,并且不会打印错误消息。因此,问题并不是要消除错误,而是要消除消息。

多亏了提供的链接,我发现我可以将
“?loggerLevel=OFF”
附加到
DriverManager.getConnection()
中的第一个参数。这样就不会打印消息。

显示如何创建ChessDatabase对象以及如何调用isConnected()。我也不确定你是否真的需要这种方法。