gpt4 book ai didi

java - 将 HashMap 数据保存到 SQLite

转载 作者:太空狗 更新时间:2023-10-29 12:41:12 25 4
gpt4 key购买 nike

我正在尝试将数据从 Json 保存到 SQLite 中。现在我将 Json 中的数据保存到 HashMap 中。

我已经搜索过了,据说使用 ContentValues。但我仍然不明白如何使用它。

我试着看这个问题save data to SQLite from json object using Hashmap in Android ,但这并没有多大帮助。

我可以使用任何选项将数据从 HashMap 保存到 SQLite 中吗?

这是我的代码。

MainHellobali.java

// Hashmap for ListView
ArrayList<HashMap<String, String>> all_itemList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_helloballi);

all_itemList = new ArrayList<HashMap<String, String>>();
// Calling async task to get json
new getAllItem().execute();
}


private class getAllItem extends AsyncTask<Void, Void, Void> {


@Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();

// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

Log.d("Response: ", "> " + jsonStr);

if (jsonStr != null) {
try {

all_item = new JSONArray(jsonStr);


// looping through All Contacts
for (int i = 0; i < all_item.length(); i++) {
JSONObject c = all_item.getJSONObject(i);

String item_id = c.getString(TAG_ITEM_ID);
String category_name = c.getString(TAG_CATEGORY_NAME);
String item_name = c.getString(TAG_ITEM_NAME);

// tmp hashmap for single contact
HashMap<String, String> allItem = new HashMap<String, String>();

// adding each child node to HashMap key => value
allItem.put(TAG_ITEM_ID, item_id);
allItem.put(TAG_CATEGORY_NAME, category_name);
allItem.put(TAG_ITEM_NAME, item_name);

// adding contact to contact list
all_itemList.add(allItem);

}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}

return null;
}
}

我也有 DatabasehHandler.javaAllItem.java。如果有必要,我可以把它放在这里。

先谢谢

** 添加编辑后的代码 **

 // looping through All Contacts
for (int i = 0; i < all_item.length(); i++) {
JSONObject c = all_item.getJSONObject(i);

String item_id = c.getString(TAG_ITEM_ID);
String category_name = c.getString(TAG_CATEGORY_NAME);
String item_name = c.getString(TAG_ITEM_NAME);

DatabaseHandler databaseHandler = new DatabaseHandler(this); //error here "The Constructor DatabaseHandler(MainHellobali.getAllItem) is undefined

}

最佳答案

如@birdy 所述,您可以将 JSON 数据作为字符串存储在数据库中。在我的例子中,我已经做了你想要实现的同样的事情,在我的例子中,我刚刚创建了一个抽象数据源,它将扩展到我将在我的数据库中设置的任何 JSON 对象。但基本上,您只需要一种将 JSONObject 转换为 ContentValues 对象的方法。

public ContentValues jsonToContentValues(JSONObject json) {
ContentValues values = new ContentValues();
values.put("MY_COLUMN", json.optString("MY_JSON_VALUE"));
return values;
}

设置好内容值对象后,您只需将值插入数据库即可。

return database.insert("MY_TABLE_NAME", null, contentValues);

关于java - 将 HashMap 数据保存到 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25430870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com