2017-05-22 4 views
2

MySQLからデータを取得するAndroidアプリを開発しましたが、挿入時に&の更新が発生してサーバーからすべてのデータがロードされるという問題があります。挿入または更新されたレコードだけを同期したい。サーバーがレコードを追加または更新するときにアプリケーションデータを同期する方法

これは私のコードです:

@Override 
protected void onHandleIntent(Intent intent) { 
    try { 
      //Activity activity = (Activity)context; 
      Log.d("st", String.valueOf(System.currentTimeMillis())); 
      DataBaseHelper dataBaseHelper = new DataBaseHelper(context); 
      dataBaseHelper.createDataBase(); 
      dataBaseHelper.openDataBase(); 
      HttpClient httpclient = new DefaultHttpClient(); 

      //utils.getdata("Userid"); 
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm a"); 
      Date date = new Date(); 
      String link = "http://ec2-52-4-106-227.compute-1.amazonaws.com/capalinoappaws/apis/getProcurementDaily.php?currentDate="+simpleDateFormat.format(date); 
      link = link.replace(" ","%20"); 
      HttpPost httppost = new HttpPost(link); 

      ResponseHandler<String> responseHandler = new BasicResponseHandler(); 

      final String response = httpclient.execute(httppost, 
        responseHandler); 

      Log.i("Response", "Response : " + response); 
      if (!dataBaseHelper.sqliteDataBase.isOpen()) 
       dataBaseHelper.openDataBase(); 
      dataBaseHelper.delete("ProcurementMaster"); 
      JSONArray jsonarray = new JSONArray(response); 
      for (int i = 0; i < jsonarray.length(); i++) { 
       JSONObject jsonobj = jsonarray.getJSONObject(i); 

       String ProcurementID = jsonobj.getString("ProcurementID"); 
       String ProcurementEPIN = jsonobj.getString("ProcurementEPIN"); 
       String ProcurementSource = jsonobj.getString("ProcurementSource"); 
       String ProcurementAgencyID = jsonobj.getString("ProcurementAgencyID"); 

         /*ProcurementAgencyID = ProcurementAgencyID.replace(")",""); 
         ProcurementAgencyID = ProcurementAgencyID.replace("(","");*/ 
       ProcurementAgencyID = ProcurementAgencyID.replace("'","\\u0027"); 

       String ProcurementTypeIDP = jsonobj.getString("ProcurementTypeIDP"); 
       String ProcurementTitle = jsonobj.getString("ProcurementTitle"); 
       //Log.d("ProcurementTitle",ProcurementTitle); 
/* 
         ProcurementTitle = ProcurementTitle.replace(")",""); 
         ProcurementTitle = ProcurementTitle.replace("(","");*/ 
       ProcurementTitle = ProcurementTitle.replace("'","''"); 

       String ProcurementShortDescription = jsonobj.getString("ProcurementShortDescription"); 

         /*ProcurementShortDescription = ProcurementShortDescription.replace(")",""); 
         ProcurementShortDescription = ProcurementShortDescription.replace("(","");*/ 
       ProcurementShortDescription = ProcurementShortDescription.replace("'","''"); 


       String ProcurementLongDescription = jsonobj.getString("ProcurementLongDescription"); 

         /*ProcurementLongDescription = ProcurementLongDescription.replace(")",""); 
         ProcurementLongDescription = ProcurementLongDescription.replace("(","");*/ 
       ProcurementLongDescription = ProcurementLongDescription.replace("'","''"); 

       String ProcurementProposalDeadline = jsonobj.getString("ProcurementProposalDeadline"); 
       String ProcurementPreConferenceDate = jsonobj.getString("ProcurementPreConferenceDate"); 
       String ProcurementQuestionDeadline = jsonobj.getString("ProcurementQuestionDeadline"); 
       String ProcurementAgencyURL = jsonobj.getString("ProcurementAgencyURL"); 

       String ProcurementDocument1URL = jsonobj.getString("ProcurementDocument1URL"); 
       String ProcurementDocument2URL = jsonobj.getString("ProcurementDocument2URL"); 
       String ProcurementDocument3URL = jsonobj.getString("ProcurementDocument3URL"); 
       String ProcurementDocument4URL = jsonobj.getString("ProcurementDocument4URL"); 
       String ProcurementDocument5URL = jsonobj.getString("ProcurementDocument5URL"); 
       String ProcurementAddedDate = jsonobj.getString("ProcurementAddedDate"); 

       String ProcurementContractValueID = jsonobj.getString("ProcurementContractValueID"); 
       String Status = jsonobj.getString("Status"); 
       String LASTEDITEDUSERNAME = jsonobj.getString("LASTEDITEDUSERNAME"); 
       String PDFPath = jsonobj.getString("PDFPath"); 

       boolean isInserted = dataBaseHelper.InsertProcurementMaster(new ProcMaster(Integer.valueOf(ProcurementID), ProcurementEPIN, ProcurementSource, 
         ProcurementAgencyID, ProcurementTypeIDP, ProcurementTitle,ProcurementShortDescription,ProcurementLongDescription,ProcurementProposalDeadline, 
         ProcurementPreConferenceDate,ProcurementQuestionDeadline,ProcurementAgencyURL,ProcurementDocument1URL,ProcurementDocument2URL,ProcurementDocument3URL, 
         ProcurementDocument4URL,ProcurementDocument5URL,ProcurementAddedDate,ProcurementContractValueID,Status,LASTEDITEDUSERNAME,PDFPath)); 
       //Log.d("InsertProcurementMaster", "Inserted"); 

       //list_data.add(new ListData(image, contentShortDescription, ContentRelevantDateTime)); 

       //isinserted = dataBaseHelper.InsertUserProcurmentTracking(been); 
      } 

      Log.d("et", String.valueOf(System.currentTimeMillis())); 


     } catch (Exception e) { 
            e.printStackTrace(); 
           } 
} 
+0

stackoverflowの答えには双方向同期が広すぎます... – Selvin

答えて

0

は、クライアントとサーバー側のソケットを実装してみてください。 https://socket.io/

+0

メッセージキューがないと明らかに機能しません...なぜですか?クライアントはオフラインです(データ接続なし)。データはサーバー上で変更されました。ソケットは、オフラインであるためクライアントにデータを送信しません...競合の解決については言及しません。 – Selvin

関連する問題