我正在浏览这个网站已有一段时间了。社区对我帮助很大,尽管我从未注册过。谢谢你。
然而,这次我只是通过浏览找不到问题的解决方案,所以我决定在这里注册并说明我的问题,以便有人可以帮助我。
首先,我想说,我基本上都是在学习之初,所以我还不是很了解情况。目前我正在学习即将开始的考试,我需要了解数据库。选择的数据库是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文件。
我希望有人知道(关于)这个问题,并愿意帮助我。 提前谢谢。
请原谅我的英语,这不是我的母语。
答案 0 :(得分:0)
没有人能真正帮助我,这是合乎逻辑的,因为这只是因为我的愚蠢。 错误发生在
“JDBC:在PostgreSQL://本地主机:1112 /人”
只有当我在另一台计算机上完成整个事情,看看它是否是我的系统时,我意识到我不应该在行尾写出实际的表名,而是数据库的名称,所以我只是将“人”变成了“postgres”并且它起作用了。
抱歉这个愚蠢的问题,我希望我的下一个会更好:)
*主题可以删除或关闭,也可以用它来做任何事情。
谢谢任何人!