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