2015-10-07 85 views
-2

我有一段基本上同步在線數據庫之間的數據的代碼。然而,我得到一個特定的代碼行(map.put("id", obj.get(mydb.WEB_ID).toString());)的錯誤,其中一個整數值從android sqlite數據庫中獲得並提交給在線數據庫。全COSE是顯示如下:Android HashMap問題

public void updateSQLite(String response){ 
    ArrayList<HashMap<String, String>> syncL; 
    syncL = new ArrayList<HashMap<String, String>>(); 
    // Create GSON object 
    Gson gson = new GsonBuilder().create(); 
    try { 
     // Extract JSON array from the response 
     JSONArray arr = new JSONArray(response); 
     System.out.println(arr.length()); 
     // If no of array elements is not zero 
     if(arr.length() != 0){ 
      // Loop through each array element, get JSON object which has userid and username 
      for (int i = 0; i < arr.length(); i++) { 
       // Get JSON object 
       JSONObject obj = (JSONObject) arr.get(i); 
       System.out.println(obj.get("web_id")); 
       System.out.println(obj.get("phone_id")); 
       System.out.println(obj.get("msg_id")); 
       mydb.updateWebSync(obj.get(obj.get("phone_id").toString(), obj.get("msg_id").toString(), obj.get("web_id").toString()); 

       HashMap<String, String> map = new HashMap<String, String>(); 
       map.put("id", obj.get(mydb.WEB_ID).toString()); 
       map.put("p_id", obj.get(mydb.COLUMN_ID).toString()); 
       map.put("s", "1"); 
       syncL.add(map); 
      } 
      updateMySQLSyncSts(gson.toJson(syncL), "syncsts"); 
      Toast.makeText(getApplicationContext(), "Download Messages success!", Toast.LENGTH_SHORT).show(); 
     } 
    } catch (JSONException e) { 
     Toast.makeText(getApplicationContext(), "Download Messages error!", Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } 
} 

在我的Android SQLite數據庫中,mydb.WEB_ID的值存儲爲一個整數。任何援助表示讚賞。

+0

什麼樣的錯誤?編譯時間或運行時間?如果使用'String.valueOf(obj.get(「web_id」))''而不是'obj.get(mydb.WEB_ID).toString()'會發生什麼? – Blackbelt

+0

錯誤仍然相同。至於它是編譯時還是運行時錯誤,我真的不知道其中的差別,但錯誤開始像'13704-13704 /? W/System.err:' – Biko

回答

0

我想通了我的錯誤...我打電話給HashMap這是不同於json變量的數據庫列名稱。非常感謝您的協助。

0
Hashmap<String,String> 

它只包含字符串值。所以你必須將它轉換爲String。 使用

toString() 

函數它會給你錯誤。

嘗試用

String.ValueOf(obj.get("web_id")) 

它會在整數值轉換爲字符串和您的問題得到解決。

快樂編碼。 :P

+0

不幸的是,這個解決方案沒有工作 – Biko

+0

只是在你的logcat中打印你的(obj.get(「web_id」))並給我這個值。 –

+0

試一試這段代碼首先檢查你從DB獲得的內容的長度(),如果長度()> 0,然後轉換它。所以只需添加if((obj.get(「web_id」))。toString()。length()> 0) –