-1

私はAndroidアプリケーション開発の初心者です。データベースがローカルホストではないPHP経由でPostgreSQLに接続できるAndroidプロジェクトを開発するタスクを与えました。接続方法を教えてください。

4

1 に答える 1

1

SO には、Android アプリとの PHP の統合に関連するさまざまな投稿があります。Android JSON を検索します。このようにして、アプリを Web 上の MySQL データベースにリンクすることができました。PHPクエリ呼び出しを除いて、PostqreSQLも同じです。

ここで行う必要があるのは、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;

}
}

圧倒される可能性があるため、情報を過負荷にしたくない. これを出発点として試して、必要な場所に到達できるかどうかを確認してください。そうでない場合は、お知らせください。できることならお手伝いします。

于 2012-07-30T03:19:31.237 に答える