2016-07-27 86 views
0

我打電話給一個Web服務我在數組[]中獲取數據。我想在sqlite數據庫中插入這些數據。我在服務器和sqlite上也有相同的數據庫結構。插入Gson數據到Android Sqlite

讓我們先從模型類

public class RateList { 

    public int id; 
    public String Name; 
    public String description; 
    public String amount; 
    public String image; 
} 

我使用抽射得到web服務的數據。我在下面的代碼格式中獲取數據代碼僅需要部分代碼

public void onResponse(String response) { 
     Log.e("response",response); 
     RateList[] itemList; 
     itemList = new Gson().fromJson(response, RateList[].class); 
     helper.insertData(itemList); 
} 

這是我從Web服務獲得的響應。

[ 
    { 
    "id": "1", 
    "Name": "pendrive", 
    "description": "8 GB", 
    "amount": "350", 
    "image": "http://my_website_url/Demo/images/9.png" 
    }, 
    { 
    "id": "2", 
    "Name": "headphone", 
    "description": "", 
    "amount": "4500", 
    "image": "http://my_website_url/Demo/images/1.png" 
    }, 
    . 
    . 
    . 
] 

現在我想插入RateList[] itemList這個GSON數據到數據庫中,這是我DbHelper代碼。

public void insertData(RateList[] itemList) { 

    db = getWritableDatabase(); 

    for (int i = 0; i < itemList.length; i++) { 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put("id", ""+itemList[i].id); 
     contentValues.put("Name", itemList[i].Name); 
     contentValues.put("description", itemList[i].description); 
     contentValues.put("amount", itemList[i].amount); 
     contentValues.put("image", itemList[i].image); 
     db.insert(tableName, null, contentValues); 
    } 
} 

當我調試我的應用程序contentValues顯示鍵= 0和值= 1;我不知道我犯了什麼錯誤。我在網上搜索過,但沒有具體的例子。

回答

1

在insertData函數中, 嘗試在for循環之前啓動contentValues一次。

db = getWritableDatabase(); 
ContentValues contentValues = new ContentValues(); 
    for (int i = 0; i < itemList.length; i++) { 
     ... 
     db.insert(tableName, null, contentValues); 
    } 
0

該代碼似乎很好,交叉檢查列名和表名。如果值存在於contentValue對象中,則在分配值後檢查contentValue對象