Postgresql没有连接到android使用JDBC throwing org.postgresql.util.PSQLException:连接尝试失败 [英] Postgresql not connecting to android using JDBC throwing org.postgresql.util.PSQLException: The connection attempt failed

查看:2310
本文介绍了Postgresql没有连接到android使用JDBC throwing org.postgresql.util.PSQLException:连接尝试失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个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自动生成的catch块
e.printStackTrace();
}
catch(异常e){
// TODO自动生成的catch块
e.printStackTrace();
}
返回null;

pg_hba.conf



IPv4本地连接:



host all all 192.168.43.207信任



IPv6本地连接:



主机全部:: 1/128信任



postgresql.conf / p>

listen_addresses ='*'



注意:如果我正在使用localhost / 127.0更改ip地址192.168.43.207。 0.1它是抛出错误 -
org.postgresql.util.psqlexception连接被拒绝。检查主机名和端口是否正确
我已经搜索了它,也看到了Stackoverflow的帖子,但没有任何工作。
我正在使用 windows7 请提供解决方案。
请帮助我,因为我正在争取最后两天,但没有任何工作。



编辑:当我在Windows中从CMD运行这些命令时,我得到了以下outout

  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 | TCP / IP协议TCP / IP协议TCP /
TCP [:: 1]:5432 -PC:49574 ESTABLISHED


解决方案

您的问题是,Android上的 127.0.0.1 转到虚拟Android设备,而不是托管PostgreSQL数据库的机器。参考用于网络的Android模拟器文档


模拟器的每个实例都运行在虚拟路由器/防火墙
服务之后,将其与开发机器的网络
的接口和设置隔离开来互联网。仿真设备可以

网络上看不到您的开发机器或其他仿真器实例。相反,它只看到它通过以太网
连接到路由器/防火墙。


此外,还有虚拟路由器的表:





进一步介绍如何使用 127.0.0.1 (强调我的):


另请注意,开发机器
上的地址127.0.0.1对应于仿真器自己的回送接口。如果您想要在开发机器的loopback
接口(也称为机器上的127.0.0.1)上运行
访问服务,则应该使用
专用地址10.0.2.2。 / strong>


您应该使用 10.0.2.2 而不是 127.0.0.1 如果要连接到开发机器。


I am developing an android application for which I need to connect to Postgresql database, I installed it 9.3 version, and checked in PGAdminIII it is connecting. I also created a java project in eclipse just for testing JDBC it is connecting successfully but when I am trying to connet to Postgresql from Android project it is throwing error: org.postgresql.util.PSQLException: The connection attempt failed. Here is the code Which I written in 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;

and pg_hba.conf

IPv4 local connections:

host all all 192.168.43.207 trust

IPv6 local connections:

host all all ::1/128 trust

postgresql.conf

listen_addresses = '*'

Note: If I am changing ip address 192.168.43.207 with localhost/127.0.0.1 it is throwing error- org.postgresql.util.psqlexception connection refused. check that the hostname and port are correct I have googled about it and also seen posts on Stackoverflow but nothing works. I am using windows7 please provide solution according to it. please help me as I am fighting it for last two days but nothing works.

Edit: when I run these commands from CMD in windows I got following outout

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

解决方案

Your problem is that 127.0.0.1 on the Android goes to the virtual Android device and not to your machine hosting the PostgreSQL database. Referencing the Android emulator documentation for networking:

Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine's network interfaces and settings and from the internet. An emulated device can not see your development machine or other emulator instances on the network. Instead, it sees only that it is connected through Ethernet to a router/firewall.

And below that, there is a table for the virtual router:

And further down in a section about using 127.0.0.1 (emphasis mine):

Also note that the address 127.0.0.1 on your development machine corresponds to the emulator's own loopback interface. If you want to access services running on your development machine's loopback interface (a.k.a. 127.0.0.1 on your machine), you should use the special address 10.0.2.2 instead.

You should use 10.0.2.2 rather than 127.0.0.1 if you want to connect to the development machine.

这篇关于Postgresql没有连接到android使用JDBC throwing org.postgresql.util.PSQLException:连接尝试失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆