我有一个包含两个数据库的Android应用。我需要在Web服务器上将它们与两个相同(相同字段结构和字段名称)的数据库同步。但首先我需要在Web服务器上查看另一个数据库,从中提取一些信息,然后将这两个数据库与第一个数据库中的一些其他数据同步。我已经在Android应用程序上工作了一段时间,我刚刚学习了足够的PHP与MySQL来构建一个基本CRUD的Web应用程序。
我有几个问题:
如何在Android中同步这些数据库?
同步可以双向工作吗?如果我在Android中更改数据库数据,我可以在Web服务器上相应地更改它们,反之亦然吗?
我正在为老年人开发一个基本的GUI,以便他们可以使用Android手机。我的Web应用程序应该在Android应用程序的数据库中添加联系人和提醒,但是当我在我的Android应用程序中手动添加联系人或提醒时,我想在我的Web应用程序中看到这些(同步)。
谢谢! :)
答案 0 :(得分:2)
我认为您基本上想要做的是创建一个API来桥接设备上的数据和服务器上的数据。
从头开始创建基本API时,这个site对我帮助很大。您必须了解GET和POST如何工作的基础知识,但是一旦完成,为简单数据传输制作API的过程就非常简单。
如果您真的想简化使用API创建数据库的过程,我建议您查看名为StackMob的服务。该服务允许您设置一些非常简单(和复杂)的表,并生成API以帮助您将这些表连接到HTML5,iOS和Android。
答案 1 :(得分:2)
我将分享如何使用PHP文件在Android应用程序和PHP服务器之间同步数据,它比Web服务等更容易..并且它给出了相同的结果返回相同的结果。
<强>查询强>
* - &gt; PHP方面:*
创建一个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目录
使用您的网址,使用浏览器测试返回数据 www.localhost/MyTableName.php,通常您会收到所有查询 JSON格式的内容。
* - &gt; Android方面:*
下载此课程'ClientHTTP'https://www.dropbox.com/s/odpaus1tjhd9orv/ClientHTTP.java
在清单中添加互联网权限。
点击按钮同步放入:
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();
}
<强>更新强>
* - &gt; 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();
?>
* - &gt; 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();
如果您拥有自己的服务器,请根据您的域名替换localhost。
如果您使用的是模拟器,请替换每个的localhost域名 您的实际IP地址,例如查询网址变为: 192.168.1.2/MyTableName.php
答案 2 :(得分:0)
您需要一个WebService,以便与DataBase Server&amp; Android设备。
开发Web服务:它应具有从数据库服务器和数据库获取数据的逻辑。返回数据库服务器。
在Android端,您可以使用KSoap来使用Web服务。 See this example here.
答案 3 :(得分:0)
您需要开发Web服务才能实现同步。我使用SOAP协议在android应用程序和asp.net应用程序之间建立通信。基本上我们开发了游戏应用程序,它在asp.net和sql server 2008中都有管理面板和服务器数据库,android应用程序有SQLite数据库。这两个数据库都通过Web服务同步。您还可以使用restful Web服务而不是SOAP