1

我正在调用一个 Web 服务,我在数组 [] 中获取了数据。我想在 sqlite 数据库中插入这些数据。我在服务器和 sqlite 上也有相同的数据库结构。

让我们从模型类开始

public class RateList {

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

我正在使用 volley 从 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 显示 key = 0 和 value = 1; 我不知道我在哪里犯错了。我在网上搜索,但没有具体的例子。

4

2 回答 2

1

在 insertData 函数中,尝试在 for 循环之前仅启动一次 contentValues。

db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
    for (int i = 0; i < itemList.length; i++) {
       ...
        db.insert(tableName, null, contentValues);
    }
于 2016-07-27T20:27:46.223 回答
0

代码似乎很好,交叉检查列名和表名。如果值存在于 contentValue 对象中,还要在赋值后检查 contentValue 对象

于 2016-07-27T22:16:07.217 回答