【发布时间】:2015-04-27 06:16:00
【问题描述】:
我正在解析 JSON 并尝试将该 JSON 数据存储到 SQLite 数据库中,我的 JSON 中只有 name 属性并且有大约 15 条记录,但我无法将所有记录存储到 SQLite - 仍然只存储最后解析成 JSON 的记录。
这是我的 JSON 的样子:
{
"actors": [
{
"name": "Name 1"
},
{
"name": "Name 2"
},
{
"name": "Name 3"
},
.......
{
"name": "Name 15"
}
]
}
我如何将所有记录存储到 JSON 中? 正如您在我的 JSON 中看到的那样,我有 15 条记录,但在 SQLite 中,我只获取最后一条 JSON 记录的数据(即 - 名称 15)
@Override
protected Boolean doInBackground(String... urls) {
try {
//------------------>>
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
// StatusLine stat = response.getStatusLine();
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsono = new JSONObject(data);
JSONArray jarray = jsono.getJSONArray("actors");
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
Actors actor = new Actors();
actor.setName(object.getString("name"));
actorsList.add(actor);
sqliteDB.open();
sqliteDB.deleteAll();
sqliteDB.insert(object.getString("name"));
sqliteDB.close();
}
return true;
}
//------------------>>
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
【问题讨论】:
-
你为什么在循环中调用它 sqliteDB.deleteAll(); ?
-
如果我没记错的话,你在插入项目后删除记录当你调用 sqliteDB.deleteAll();
-
等一下,让我检查一下.. @SyedRazaMehdi
-
使用我发布的代码希望这是你做的错误,我更喜欢你不要在循环中打开和关闭数据库连接,它必须在外面完成