通过php连接Android和Postgresql之间的连接

时间:2012-07-30 03:14:05

标签: php android postgresql-9.1

我是Android应用程序开发的新手。我已经给出了一个开发一个可以通过PHP连接到PostgreSQL的android项目的任务,该数据库不是本地主机。你们可以帮我解决如何进行连接的问题。

1 个答案:

答案 0 :(得分:0)

SO中有各种与PHP与Android应用程序集成相关的帖子。您想要搜索Android JSON。这就是我能够将我的应用程序链接到网络上的MySQL数据库的方式。 PostqreSQL应该没有什么不同,除了PHP查询调用。

您需要做的是编写一个连接到PSQL数据库并在其上运行查询的PHP程序。然后需要将查询格式化为JSON数组。下面的示例连接到mysql数据库。由于我从未使用过PostgreSQL,因此我不确定查询它的PHP代码是什么。你应该能够在PHP.net上找到这些信息。

<?php

 $db = mysql_connect('localhost','mydatabase', 'mypassword');
 mysql_select_db("myDB");

 $TABLE = isset($_POST["table"]) ? $_POST["table"] : "rep_table";
 $q = mysql_query("SELECT * FROM " . $TABLE);
 while($row=mysql_fetch_assoc($q)) {
    $result[]=$row;
}

print(json_encode($result));

mysql_close();

?>

然后,您的应用程序将通过JSON接口调用此PHP文件,然后您可以解析并从中获取值。

public class JSONHelper {

static ArrayList<NameValuePair> mArray = new ArrayList<NameValuePair>();
private static final String TAG = "JSONUpdater";

public String getJSONResult(String url) {

    String result = "";
    InputStream is = null;

    try {
        HttpClient httpclient = new DefaultHttpClient();
        Log.d(TAG, "Client set");
        HttpPost httpPost = new HttpPost(url);
        Log.d(TAG, "Post set");

        if (!mArray.isEmpty()) {
            Log.d(TAG, "mArray is not empty!");
            httpPost.setEntity(new UrlEncodedFormEntity(mArray));
        } else {
            Log.d(TAG, "mArray is SO empty!!");
        }

        HttpResponse response = httpclient.execute(httpPost);
        Log.d(TAG, "response executed");
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    } catch(Exception e) {
        Log.d("ScoreCard",e.toString());
    }

    //Retrieve the JSON data
    try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
                Log.d(TAG, line);
            sb.append(line + "\n");
        }

        is.close();
        result=sb.toString();

    }catch(Exception e){
        Log.e("Scorecard", "Error converting result "+ e.toString());
        return result;
    }

    //Hopefully returning a string that can be converted to a JSON array...
    return result;

}
}

不要让信息过载,因为它可能会让人不知所措。试试这个作为起点,看看你是否可以到达你需要的地方。如果没有,请告诉我。如果可以,我会尽力帮助你。