0

我想用服務器中的MS SQL數據庫表更新我的設備中的本地SQLite數據庫表(主)。我在這裏使用SOAP服務。如果在服務器中插入任何新值,則單擊按鈕時,它必須同步並更新表中的新值。我想知道如何去做,下面是我用來調用Web服務的方法。更新在本地MS SQL SQL Server在本地更新SQLite數據庫表

這裏MANUFACTURERID和MANUFACTURERDESC是我想更新的兩列。

我用下面的鏈接作爲參考,並且有一個類TaskAsync.java使用。我想知道我必須在該課程中寫什麼來調用Web服務。作爲java的新手請幫助我如何做這個同步。 Thanx提前

http://stackoverflow.com/questions/14453577/sync-in-android-sqlite-and-sql-server-crud-operation-in-two-ways 



**DATABASEHELPER.JAVA** 

public void syncUsers(){ 
     try{ 


      String response = new **TaskAsync()**.execute("http://tempuri.org/ISave/SyncMaster").get(); 
      Log.d("response",response); 

      String myPath = DB_PATH + DB_NAME; 
      String tablename = "ManufacturerDesc"; 
      myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 
      myDataBase.delete(tablename, null, null); 

      ContentValues values = new ContentValues(); 
      values.put("MANUFACTURERDESC",as_Manufacturer); 
      values.put("MANUFACTURERID", asManufactureId); 
      //values.put("MANUFACTURERID", value); 

      long status = myDataBase.insert(tablename, " ", values); 
      Log.d("database", Long.toString(status)); 
      myDataBase.close(); 
     }catch (Exception e){ 
      e.printStackTrace(); 

     } 

} 


**SOAPWebservice.java** 

public SoapPrimitive manMaster(String manmas, String manmasid) 
     { 
      SoapPrimitive result = null; 
      try 
      { 
       SoapObject request = new SoapObject("http://tempuri.org/","SyncMaster"); 
       request.addProperty("MANUFACTURERID", manmasid);//soap object 
       request.addProperty("MANUFACTURERDESC" , manmas); 

       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
       envelope.setOutputSoapObject(request); 
       envelope.dotNet = true; 

       HttpTransportSE androidHttpTransport = new HttpTransportSE(url); 
       androidHttpTransport.call("http://tempuri.org/ISave/SyncMaster",envelope); 
       Log.e("WEB", androidHttpTransport.toString()); 
       result = (SoapPrimitive)envelope.getResponse(); 
       return result; 
      } 
      catch(Exception e){ 
       Log.e("WebService","Error",e); 
       e.printStackTrace(); 

       return null; 
      } 
     } 

回答

0

認沽按照doInbackground在你的異步任務的代碼()

public boolean getData() 
    { 
     try 
     { 
      SoapObject soReturn ; 
      String [] ParameterName = new String[2]; 
      String [] ParameterValue = new String[2]; 

      ParameterName[0] = "MANUFACTURERID"; 
      ParameterValue[0] = manmasid; 

      ParameterName[1] = "MANUFACTURERDESC"; 
      ParameterValue[1] = manmas; 

       try 
       { 
        objWSConfig.SetURL(URL, WebService); 
        objWSConfig.SetSOAPAction(SoapAction, MethodName); 
        objWSConfig.SetWebService(WebService); 
        objWSConfig.SetMethod(MethodName); 

        ws_Method = objWSConfig.getMethod(); 
        ws_Namespace = objWSConfig.getNamespace(); 
        ws_URL = objWSConfig.getURL(); 
        ws_SOAPAction = objWSConfig.getSOAPAction(); 

        SoapObject request = new SoapObject(ws_Namespace,ws_Method); 

        for(ArryIndex = 0 ; ArryIndex < ParameterName.length ; ArryIndex ++) 
        { 
         PropertyInfo ParaObj = new PropertyInfo(); 
         ParaObj.type = PropertyInfo.OBJECT_CLASS; 
         ParaObj.namespace = ws_Namespace; 
         ParaObj.setName(ParameterName[ArryIndex].toString()); 
         ParaObj.setValue(ParameterValue[ArryIndex].toString()); 
         request.addProperty(ParaObj);  
        } 

        System.setProperty("http.keepAlive", "false"); 

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
        envelope.setOutputSoapObject(request); 
        envelope.dotNet = true; 
        //envelope.encodingStyle = SoapSerializationEnvelope.XSD; 
        envelope.setAddAdornments(true); 

        HttpTransportSE androidHttpTransport = new HttpTransportSE(ws_URL); 
        androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 

        androidHttpTransport.call(ws_SOAPAction, envelope); 
        androidHttpTransport.debug = true; 

      if(soReturn != null) 
      { 
       boolean isResult = Boolean.parseBoolean(soReturn.getProperty 
         (WebServiceMethods.Method_Name + "Result").toString()); 

       if(isResult) 
       { 
        String ObjRetu = (String)soReturn.getProperty("ObjData_Retu");   
        Document doc = (Document) objCommon.XMLfromString(ObjRetu); 

        NodeList nodes = doc.getElementsByTagName("Table1"); 
        int TotalNodes = nodes.getLength(); 

        for (int iNode = 0; iNode < TotalNodes ; iNode++) 
        { 
         Element e = (Element) nodes.item(iNode); 

         String MANUFACTURERID = objCommon.getValueFromXML(e, "MANUFACTURERID"); 
         String MANUFACTURERDESC = objCommon.getValueFromXML(e, "MANUFACTURERDESC"); 

         ContentValues values = new ContentValues(); 
         values.put(MANUFACTURERDESC , MANUFACTURERID); 
         values.put(MANUFACTURERDESC, MANUFACTURERDESC); 

         objDBTable.insert(values); 

        } 

        objDBTable.close(); 

        return true; 
       } 
      } 
      else 
      { 
       return false; 
      } 
     }catch (Exception e) 
     { 
      Log.e("Error : ", "Error While Getting Data"); 
     } 
     return true ; 
    } 
+0

如何在上面的代碼 – Manju

+0

定義setURL方法,它是用來設置Web方法的URL。它取決於你做出這個功能。 – Andrain

相關問題