我正在开发一个必须连接到Postgresql数据库的Android应用程序。 出于测试目的,postgresql正在我的开发机器上运行。
使用wireshark查看我的localhost接口只显示android模拟器和我的开发机器之间的握手,并且没有postgresql连接的迹象。 postgresql日志也没有显示任何这种连接的提示。
10.0.2.2是我的开发机器localhost接口的IP,如android模拟器所见。
这是我的代码:
package com.example.kevin.servertest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import java.sql.*;
public class MainActivity extends AppCompatActivity {
private Button btnGet, btnPost;
private TextView txtGet;
private EditText numGet, txtPost;
@Override
protected void onCreate(Bundle savedInstanceState) {
try
{
Class.forName("org.postgresql.Driver");
}
catch (ClassNotFoundException e)
{
errorMsg("Postgresql Driver Not Found!");
e.printStackTrace();
}
Connection connection = null;
try
{
System.out.println("Establishing Connection...");
connection = DriverManager.getConnection("jdbc:postgresql://10.0.2.2:5432/test", "dbuser", "dbpass");//Fails here
}
catch(SQLException e)
{
errorMsg("Connection Failed!");
e.printStackTrace();
return;
}
if (connection != null)
{
System.out.println("Connection Established!");
}
else
{
errorMsg("No Connection!");
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnGet = (Button) findViewById(R.id.button2);
btnPost = (Button) findViewById(R.id.button);
txtGet = (TextView) findViewById(R.id.textView);
numGet = (EditText) findViewById(R.id.editText);
txtPost = (EditText) findViewById(R.id.editText2);
btnGet.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
System.out.println("btnGet");
//Do get stuff
}
});
btnPost.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
System.out.println("btnPost");
//Do post stuff
}
});
}
void errorMsg(String msg)
{
System.out.println("App-Error! " + msg);
}
}
我的pg_hba.conf是默认的pg_hba.conf。