Я построил приложение для Android, приложение содержит БД SQLite, мне нужно, когда пользователь открывает приложение, запущенное в фоновом режиме, чтобы сравнить значения в локальном SQlite с данными в MYSQL (размещается снаружи), сравнение будет основано на значении состояния, таким образом, я взял идентификатор и статус из локального SQlite и сравнил его с облачными данными, если значение статуса в облаке больше, чем статус в локальном, это означает, что данные были изменены, поэтому приложение обновит локальные данные.
Теперь я написал код ниже, чтобы получить идентификатор и статус из локального SQLite:
private void get_local_cloud_compare() {
data= new DataHandler(this);
data.open();
Cursor bcreturneddata = data.returndata();
if(bcreturneddata.moveToFirst())
{
do
{
IDslist.add(bcreturneddata.getString(0));// 0 position for ID
Statuslist.add(bcreturneddata.getString(8));// 8'th position for status
}while(bcreturneddata.moveToNext());
}
data.close();
}
теперь обычно, когда мне нужно связаться с базой данных MYSQL, я использовал следующий код:
private void checkchanges(// argument here ) {InputStream isr = null;
String result = null;
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("here the url of my php file");
httppost.setEntity(new UrlEncodedFormEntity(here ArrayList<NameValuePair>));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) !=null)
{
sb.append(line +"\n");
}
isr.close();
result = sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
JSONArray jarray = new JSONArray(result);
for ( int i =0; i<jarray.length();i++)
{
JSONObject json = jarray.getJSONObject(i);
//here i read the new received data
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
Теперь в этой строке: httppost.setEntity (new UrlEncodedFormEntity (здесь ArrayList)); как я могу передать два списка IDslist и statuslist вместо на namevaluepair?
и как будет код файла PHP, который будет принимать список идентификаторов и загружать данные для его локального сравнения, мне просто нужно знать, как загружать данные из MYSQL на основе IDslist вместо namevaluepair, поскольку точное число строк в локальная БД?
Задача ещё не решена.
Других решений пока нет …