【发布时间】:2016-11-23 19:55:00
【问题描述】:
我浏览这个网站已经有一段时间了。社区帮了我很多,尽管我从未注册过。谢谢。
但是,这一次我无法通过浏览找到解决问题的方法,所以我决定在这里注册并提出我的问题,以便有人可以帮助我。
首先我想说,我基本上是在学习的开始,所以我还不是很了解。目前我正在为即将到来的考试学习,我需要了解数据库。选择的数据库是 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();
}
}
}
代码有点乱,因为我用谷歌搜索了一些时间并尝试了一些东西。我不确定是否应该将注释掉的代码与其余部分一起粘贴,但至少你可以看到我已经尝试了一些东西。 我也尝试了一个不同的端口,一开始我使用的是标准端口(5432),但没有任何区别。
我还在构建路径中链接了最新的 jdbc jar 文件。
我希望有人知道(关于)这个问题并愿意帮助我。 提前致谢。
对不起,我的英语不是我的母语。
【问题讨论】:
-
你使用的jdbc驱动版本是什么?
-
嗨,目前是“postgresql-9.4.1209.jar”。我还尝试了“postgresql-9.4.1208.jar”,因为 1209 很新,但没有什么不同
-
你是对的。当我在寻找解决方案时,我实际上看到了这个线程。但我不太确定我应该做什么,因为这两个答案都对我没有帮助。我是否应该用所有代码和信息陈述我的问题作为对这个主题的回答,并希望第一次没有看到这个问题的人现在可以看到它,因为它已经更新了?这是一个诚实的问题,因为这是我的第一篇文章。如果应该这样做,我可以这样做,并且可以删除我的主题。
-
我在本地机器上测试过。我的 jdbc 版本
postgresql-9.4.1209.jar和我的 JDK 1.7 JVM 有问题。我测试了版本9.4-1206-jdbc42,一切正常。您使用的是什么 JDK 版本?
标签: java eclipse postgresql utf-8