用java连接到postgresql服务器失败(UTF-8)

时间:2016-07-20 14:08:55

标签: java eclipse postgresql utf-8

我正在浏览这个网站已有一段时间了。社区对我帮助很大,尽管我从未注册过。谢谢你。

然而,这次我只是通过浏览找不到问题的解决方案,所以我决定在这里注册并说明我的问题,以便有人可以帮助我。

首先,我想说,我基本上都是在学习之初,所以我还不是很了解情况。目前我正在学习即将开始的考试,我需要了解数据库。选择的数据库是Postgresq。但要真正理解类似的东西,你需要尝试一下,而不仅仅是阅读它。

我不确定究竟需要哪些信息。但是我使用的是Windows 7,pgadmin和eclipse,所有这些都应该是最新的。如果您需要更多信息,请索取。

我使用了教程来启动并运行,但是我无法使用eclipse建立与数据库的连接。 DriverManager.getConnection()导致UTF-8错误,我不理解也无法修复它。

org.postgresql.util.PSQLException: The connection attempt failed.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:67)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:212)
at org.postgresql.Driver.makeConnection(Driver.java:407)
at org.postgresql.Driver.connect(Driver.java:275)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.hywy.TestConnection.main(TestConnection.java:23)
Caused by: java.io.IOException: Illegal UTF-8 sequence: initial byte is 11111xxx: 252
at org.postgresql.core.UTF8Encoding.decode(UTF8Encoding.java:131)
at org.postgresql.core.PGStream.ReceiveString(PGStream.java:331)
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:447)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:223)
... 7 more

我使用的代码是:

import java.sql.*;
import java.util.Properties;
//import com.hywy.db.DbContract;
public class TestConnection {
public static void main(String[] args) {
    Properties properties = new Properties();
    properties.setProperty("user", "postgre");
    properties.setProperty("password", "random_password");
    //properties.setProperty("ssl", "true");

    String url = "jdbc:postgresql://localhost:1112/people";
    try {
        Class.forName("org.postgresql.Driver");
    //  Connection c = DriverManager.getConnection(
    //          DbContract.HOST+DbContract.DB_NAME,
    //          DbContract.USERNAME,
    //          DbContract.PASSWORD);

        Connection con = DriverManager.getConnection(url, properties);
        //Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:1112/people" , "postgre" , "random_password");

        System.out.println("DB connected");
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    }
}
}

代码有点混乱,因为我用Google搜索了一段时间并尝试了一些东西。我不确定是否应该将评论后的代码粘贴到其余部分,但至少你可以看到我已经尝试了一些东西。 我也尝试了一个不同的端口,起初我使用的是标准端口(5432),但没有区别。

我还在构建路径中链接了最新的jdbc jar文件。

我希望有人知道(关于)这个问题,并愿意帮助我。 提前谢谢。

请原谅我的英语,这不是我的母语。

1 个答案:

答案 0 :(得分:0)

好吧,伙计们,我只是想说我解决了这个问题。我也想感谢任何试图帮助我的人。

没有人能真正帮助我,这是合乎逻辑的,因为这只是因为我的愚蠢。 错误发生在

  

“JDBC:在PostgreSQL://本地主机:1112 /人”

只有当我在另一台计算机上完成整个事情,看看它是否是我的系统时,我意识到我不应该在行尾写出实际的表名,而是数据库的名称,所以我只是将“人”变成了“postgres”并且它起作用了。

抱歉这个愚蠢的问题,我希望我的下一个会更好:)

*主题可以删除或关闭,也可以用它来做任何事情。

谢谢任何人!