我將分享如何在Android應用程序和PHP服務器之間同步數據使用PHP文件,它比Web服務等更容易,並且它以相同的返回結果給出相同的結果。
查詢
* - > PHP端:*
- 創建例如你的表結構:MyTableName:列名/密碼
創建一個PHP文件查詢數據從您的表名
<?php
//To Connect to your Data base
mysql_connect("localhost","root","");
mysql_select_db("YourDataBaseName");
// To execute a query from Your table
$sql=mysql_query("SELECT * FROM `Your_Table_Name");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
// Convert to Json format
print(json_encode($output));
// mysql_close();
?>
命名您的PHP文件,例如你的表名稱:MyTableName.php
將這個文件放在根服務器目錄中:例如在WAMP服務器www目錄
測試使用返回數據瀏覽器,使用您的URL,如 www.localhost/MyTableName.php,通常您將擁有JSON格式的所有查詢 內容。
* - > Android的一面:*
下載這個類在你的清單 'ClientHTTP' https://www.dropbox.com/s/odpaus1tjhd9orv/ClientHTTP.java
添加Internet權限。
裏面的按鈕同步的點擊放:
String lReturn=_myClientHtpp.readFromUrl(www.localhost/MyTableName.php);
// It will return a json format (Like navigator)
//Code to Clear your data from Sqlite data base TABLE ....
try {
// Create your Json Array
JSONArray lList=new JSONArray(lReturn);
// Iterate the json arry to get each Json object
for (int i = 0; i < lList.length(); i++) {
JSONObject lObject=lList.getJSONObject(i);
String lLogin=lObject.getString("Login");
String lPWD=lObject.getString("PassWord");
//Code to Insert in Sqlite data base .....
}
} catch (JSONException e) {
e.printStackTrace();
}
更新
* - > PHP端:*
<?php
//Connect to Database
mysql_connect("localhost","root","");
mysql_select_db("YourDataBase");
$sql= mysql_query("INSERT INTO YourTableName (Login,PassWord) VALUES ('".$_REQUEST['PARAM_Login']."','".$_REQUEST['PARAM_PWD']."')");
if($sql==1){
echo "true";
}else{
echo "false";
}
// mysql_close();
?>
* - > Android的一面:*
裏面的 '添加' 按鈕寫的點擊:
// List of params
ArrayList<NameValuePair> lListOfParams=new ArrayList<NameValuePair>();
// Param login
BasicNameValuePair PARAM_Login=new BasicNameValuePair("PARAM_Login", "test from Android");
// Param PWD
BasicNameValuePair PARAM_PWd=new BasicNameValuePair("PARAM_PWD", "Test from Android");
// Add params to List
lListParams.add(PARAM_Login);
lListParams.add(PARAM_PWd);
// Execute the post method from your ClientHttp class
boolean lIsInsert=_myClientHtpp.SendToUrl("www.localhost/insert.php", lListOfParams);
if(lIsInsert)
Toast.makeText(this, "Insert Success", Toast.LENGTH_LONG).show();
else
Toast.makeText(this, "Insert Error", Toast.LENGTH_LONG).show();
如果你對你自己的服務器替換本地主機每有你的域名。 192.168.1.2/MyTableName.php
你已經得到了很大的指針:
如果你正在使用模擬器,每
例如查詢網址變成實際的IP地址替換本地主機名酒莊下面列出。請注意,雖然你不一定需要在Android設備上有一個數據庫。爲什麼要在設備上和服務器上保留一個?相反,只需在服務器上安裝數據庫並使用其他人顯示的方法與其通信。 Android設備通常連接到互聯網,因此您可以節省同步數據庫的麻煩。 – Ameen 2012-12-26 06:30:54