希望你做得好。 我正在开发一个Android应用程序,我需要在本地SQL和服务器上的数据库之间进行同步。 我在服务器端使用PHP(JSON用于检索日期)。 我的问题是,当我第一次启动应用程序时,是下载服务器上的数据,然后当我第二次启动它时,数据再次下载,有时会发生,有时不会! 当添加新数据时,它会被下载,但问题仍然存在,数据会被复制。 当我在手机上试用应用程序时,数据会被下载一次,但是在添加新数据时,它不会被下载! 这是我的代码。
protected Void doInBackground(Void... uri) {
myDatabaseHandler.openToRead();
Cursor cursor = myDatabaseHandler.queueBranchId();
try {
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setSoTimeout(params, 0);
HttpClient httpClient = new DefaultHttpClient(params);
//prepare the HTTP GET call
HttpGet httpget = new HttpGet("http://restaurants.bugs3.com/branches.php");
//get the response entity
HttpEntity entity = httpClient.execute(httpget).getEntity();
if (entity != null) {
//get the response content as a string
String response = EntityUtils.toString(entity);
//consume the entity
entity.consumeContent();
// When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources
httpClient.getConnectionManager().shutdown();
//return the JSON response
JSONObject object = new JSONObject(response.trim());
JSONArray jsonArray = object.getJSONArray("branches");
if(jsonArray != null) {
for(int i = 0 ; i < jsonArray.length() ; i++) {
JSONObject object1 = (JSONObject) jsonArray.get(i);
int server_branch_id = object1.getInt("server_branch_id");
String branch_name = object1.getString("branch_name");
double branch_lat = object1.getDouble("branch_lat");
double branch_lon = object1.getDouble("branch_lon");
double distance = object1.getDouble("distance");
String restaurant_name = object1.getString("restaurant_name");
boolean exist = false;
if (cursor.moveToFirst())
{
do
{
try
{
if (server_branch_id == cursor.getInt(cursor.getColumnIndex(DatabaseHandler.KEY_LOCAL_BRANCH_ID)))
{
exist = true;
}
}
catch(Exception e)
{
}
}while(cursor.moveToNext());
cursor.close();
}
myDatabaseHandler.close();
if (!exist)
{
myDatabaseHandler.openToWrite();
myDatabaseHandler.insertBranchWithID(server_branch_id, branch_name, restaurant_name, branch_lat, branch_lon, distance);
myDatabaseHandler.close();
}
}}catch (Exception e) {
e.printStackTrace();
}
return null;
}
答案 0 :(得分:0)
可能有一些解决方法。我可以建议两种不同的方式(假设你有一个特定的id用于你下载的任何项目):
希望这有帮助