【发布时间】:2015-02-19 23:21:41
【问题描述】:
我正在开发一个需要连接到 Postgresql 数据库的 android 应用程序,我安装了 9.3 版本,并检查了它正在连接的 PGAdminIII。我还在 Eclipse 中创建了一个 java 项目,仅用于测试 JDBC,它连接成功,但是当我尝试从 Android 项目连接到 Postgresql 时,它抛出错误:org.postgresql.util.PSQLException:连接尝试失败。 这是我在 MainActivity.java 中编写的代码
@Override
protected Void doInBackground(Void... params) {
try {
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection("jdbc:postgresql://192.168.43.207:5432/testdb", "postgres", "password");
System.out.println("connection success");
conn.close() ;
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
和pg_hba.conf
IPv4 本地连接:
托管所有 192.168.43.207 信任
IPv6 本地连接:
托管所有所有 ::1/128 信任
postgresql.conf
listen_addresses = '*'
注意:如果我用 localhost/127.0.0.1 更改 ip 地址 192.168.43.207 它会抛出错误- org.postgresql.util.psqlexception 连接被拒绝。检查主机名和端口是否正确 我用谷歌搜索过它,也看到过 Stackoverflow 上的帖子,但没有任何效果。 我正在使用 windows7 请根据它提供解决方案。 请帮助我,因为我在过去两天一直在与它作斗争,但没有任何效果。
编辑:当我在 Windows 中从 CMD 运行这些命令时,我得到了关注
C:\Windows\system32>sc query postgresql-9.3
SERVICE_NAME: postgresql-9.3
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
C:\Windows\system32>netstat -a | findstr 5432
TCP 0.0.0.0:5432 -PC:0 LISTENING
TCP [::]:5432 -PC:0 LISTENING
TCP [::1]:5432 -PC:49573 ESTABLISHED
TCP [::1]:5432 -PC:49574 ESTABLISHED
【问题讨论】:
-
你能ping到当前IP进行心跳检查吗?并检查端口 5432 上的服务是否正在运行?
-
我编辑了它以检查正在运行的服务,我还从命令提示符 ping 了 IP,它正在 100% 发送数据包。
-
似乎一切都很完美。你能检查Android设备的心跳到PostGreSQL所在的物理系统吗?
-
所以,为了清楚起见,您的 Android 设备正在尝试连接到
127.0.0.1?您的设备是虚拟设备还是物理设备? -
我在 eclipse 上使用 android SDK 打开 android 模拟器来测试应用程序。
标签: java android eclipse postgresql jdbc