0

我正在尝试在后端使用 SQL 实现 PHP 服务器。我还开发了一个在 sqlite 数据库中记录数据的 android 应用程序。数据库有多个表,包含 500 多个数据(列)。当用户点击应用程序中的同步按钮时,应上传“新鲜”数据并将服务器中的更新和最新副本下载到 Android 设备。

我对如何设计这样的架构并跟踪这样的设置中的变化感到困惑。

任何想法都受到高度赞赏。

4

2 回答 2

0

我将分享如何使用 PHP 文件在 Android 应用程序和 PHP 服务器之间同步数据,它比 Web 服务等更容易。它给出相同的结果和相同的返回。

查询

* - > PHP端:*

  • 例如,创建您的表结构: MyTableName :列 Login / Password
  • 创建一个 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 格式的查询内容。

* -> 安卓端:*

  • 下载这个类'ClientHTTP' https://www.dropbox.com/s/odpaus1tjhd9orv/ClientHTTP.java

  • 在清单中添加 Internet 权限。

  • 在单击按钮 Synchronize put 内:

    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();
?>

* -> 安卓端:*

  • 在单击“添加”按钮内写入:

        // 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();
    
  • 如果您有自己的服务器,请根据您的域名替换 localhost。

  • 如果您使用的是模拟器,请根据您的实际 IP 地址替换您的 localhost 域名
    ,例如查询 URL 变为:192.168.1.2/MyTableName.php

于 2013-11-14T22:37:11.920 回答
0

查询

在服务器端:

  • 使用多个表创建数据库
  • 创建一个 Web 服务来验证您的 Data ,例如您进行查询并重新运行 Json 格式。

在安卓端:

  • 使用 Http 客户端读取 Web 服务数据。
  • 使用 json Android 类解析返回的数据:(jsonArray 和 JsonObject)
  • 将解析后的数据放入与服务器数据库具有相同结构的 Sqlite 数据库中(优先选择相同的列名、相同的表名等...)

更新

在服务器端:

  • 创建一个 Web 服务来更新您的数据库

在安卓端:

  • 使用 HttpClient 使用 Post 类型使用您的 Web 服务
于 2013-11-13T22:06:07.697 回答