我不願意張貼這個答案由於所有的間隙我會使用過時的PHP/MySQL的功能,但這裏的雲:
服務器端(僅供參考,看看MySQLi or PDO_MySQL,mysql_connect
不鼓勵):
if ($_GET["selectedCompany"] == "true" && $_GET['companyName']) {
$query = "Your query here";
mysql_connect($dbserver, $dbusername, $dbpassword) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$result = mysql_query($query) or die(mysql_error());
$num = mysql_numrows($result);
$row = mysql_fetch_assoc($result);
$i = 0;
$rows = array();
while ($i < $num) {
$survey_lat['survey_lat'] = mysql_result($result, $i, "survey_lat");
$survey_lng['survey_lng'] = mysql_result($result, $i, "survey_lng");
$thumbnail = mysql_result($result, $i, "thumbnail");
$finalImg['thumbnail'] = base64_encode($thumbnail);
$sign_type['sign_type'] = mysql_result($result, $i, "sign_type");
$object_lat['object_lat'] = mysql_result($result, $i, "object_lat");
$object_lng['object_lng'] = mysql_result($result, $i, "object_lng");
$finalArray = array_push($rows, array_merge($sign_type, $object_lat, $object_lng, $survey_lat, $survey_lng, $finalImg));
$i++;
}
print json_encode($rows);
mysql_close();
}
客戶端/ Android的側AsyncTask
檢索(我修改我給之前反映MySQL查詢的答案,以及如何解析JSON數據):
class MyAsyncTask extends AsyncTask<String, String, Void> {
private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
InputStream inputStream = null;
String result = "";
protected void onPreExecute() {
progressDialog.setMessage("Your progress dialog message...");
progressDialog.show();
progressDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface arg0) {
MyAsyncTask.this.cancel(true);
}
});
}
@Override
protected Void doInBackground(String... params) {
String url_select = "http://yoururlhere.com/index.php?selectedCompany=true&companyName=examplevalue";
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
try {
// Set up HTTP post
// HttpClient is more then less deprecated. Need to change to URLConnection
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_select);
httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
// Read content & Log
inputStream = httpEntity.getContent();
} catch (UnsupportedEncodingException e1) {
Log.e("UnsupportedEncodingException", e1.toString());
e1.printStackTrace();
} catch (ClientProtocolException e2) {
Log.e("ClientProtocolException", e2.toString());
e2.printStackTrace();
} catch (IllegalStateException e3) {
Log.e("IllegalStateException", e3.toString());
e3.printStackTrace();
} catch (IOException e4) {
Log.e("IOException", e4.toString());
e4.printStackTrace();
}
// Convert response to string using String Builder
try {
BufferedReader bReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"), 8);
StringBuilder sBuilder = new StringBuilder();
String line = null;
while ((line = bReader.readLine()) != null) {
sBuilder.append(line + "\n");
}
inputStream.close();
result = sBuilder.toString();
} catch (Exception e) {
Log.e("StringBuilding & BufferedReader", "Error converting result " + e.toString());
}
} // protected Void doInBackground(String... params)
protected void onPostExecute(Void v) {
//parse JSON data
try{
JSONArray jArray = new JSONArray(result);
for(int i=0; i < jArray.length(); i++) {
JSONObject jObject = jArray.getJSONObject(i);
String signType = jObject.getString("sign_type");
double object_lat = jObject.getDouble("object_lat");
double object_lng = jObject.getDouble("object_lng");
double survey_lat = jObject.getDouble("survey_lat");
double survey_lng = jObject.getDouble("survey_lng");
String thumbnailImg = jObject.getString("thumbnail");
byte[] encodeByte = Base64.decode(thumbnailImg, Base64.DEFAULT);
bmImg = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
bmImg = Bitmap.createBitmap(bmImg);
} // End for Loop
this.progressDialog.dismiss();
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
} // catch (JSONException e)
} // protected void onPostExecute(Void v)
} //class MyAsyncTask extends AsyncTask<String, String, Void>
那麼,你必須將數據從數據庫服務器轉移到你的Android設備。不幸的是,最好的選擇是JSON和數據庫的REST接口。 – zapl
你必須創建一個web服務,它將從mysql返回數據給你。你可以閱讀[this](http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/8339-connect-android-mysql-database-tutorial.html)教程。我試過使用mysql連接器,但它不適用於android。 –
服務器端,使用JSON。然後我的建議是使用'AsyncTask'請參閱[示例這裏](http://stackoverflow.com/a/13197506/1134705)。我就是這麼做的 – jnthnjns