Java Postgresql未使用JDBC连接到android,抛出org.Postgresql.util.PSQLException:连接尝试失败

Java Postgresql未使用JDBC连接到android,抛出org.Postgresql.util.PSQLException:连接尝试失败,java,android,eclipse,postgresql,jdbc,Java,Android,Eclipse,Postgresql,Jdbc,我正在开发一个android应用程序,我需要连接到Postgresql数据库,我安装了它的9.3版本,并签入了它正在连接的PGAdminIII。我还在eclipse中创建了一个java项目,只是为了测试JDBC,它正在成功连接,但是当我试图从Android项目连接到Postgresql时,它抛出了一个错误:org.Postgresql.util.PSQLException:连接尝试失败。 下面是我在MainActivity.java中编写的代码 @Override protected Void

我正在开发一个android应用程序,我需要连接到Postgresql数据库,我安装了它的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

侦听地址='*'

注意:如果使用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

您的问题是,Android上的
127.0.0.1
会转到虚拟Android设备,而不是您托管PostgreSQL数据库的机器。参考:

模拟器的每个实例都在虚拟路由器/防火墙后面运行 将其与开发计算机的网络隔离的服务 接口和设置,以及从internet获取的信息。模拟设备可以 在上看不到您的开发计算机或其他仿真器实例 网络。相反,它只看到它是通过以太网连接的 到路由器/防火墙

下面是虚拟路由器的表:

在下面关于使用
127.0.0.1
的部分(重点是我的):

还请注意,开发计算机上的地址127.0.0.1 对应于仿真器自己的环回接口。如果你想 访问在开发计算机的环回上运行的服务 接口(在您的机器上也称为127.0.0.1),您应该使用 改为特殊地址10.0.2.2。


如果你想连接到开发机器,你应该使用
10.0.2.2
而不是
127.0.0.1

你能ping到当前对应的IP进行心跳检查吗?检查端口5432上的服务是否正在运行?我编辑它是为了检查哪个服务正在运行,我还从命令提示符ping了IP,它正在发送100%的数据包。看起来一切都很完美。你能检查一下安卓设备到PostGreSQL所在物理系统的心跳吗?那么,请澄清一下,你的安卓设备正在尝试连接到
127.0.0.1
?您的设备是虚拟设备还是物理设备?我正在eclipse上使用android SDK,它打开android emulator来测试应用程序。