所以我正在做一个像这样的项目http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/让我向我的android应用程序显示我的数据库值图形用户界面。
我需要将我需要的数据库值保存到 android 内部存储中,这样即使我的应用程序没有连接到服务器,我也可以访问它。有什么帮助吗?
谢谢
所以我正在做一个像这样的项目http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/让我向我的android应用程序显示我的数据库值图形用户界面。
我需要将我需要的数据库值保存到 android 内部存储中,这样即使我的应用程序没有连接到服务器,我也可以访问它。有什么帮助吗?
谢谢
您可以将整个 json 写入共享首选项中的字符串,然后获取并解析它以在 GUI 中显示,即使设备处于脱机状态:
String str = json.toString();
SharedPreferences sharedPref = getSharedPreferences( "appData", Context.MODE_WORLD_WRITEABLE );
SharedPreferences.Editor prefEditor = getSharedPreferences( "appData", Context.MODE_WORLD_WRITEABLE ).edit();
prefEditor.putString( "json", str );
prefEditor.commit();
如果您选择本地 sqlite 数据库作为解决方案,我编写了一个轻量级实用程序来将您的 json 保存到 sqlite。
在这里结帐 git repo。https://github.com/wenchaojiang/JSQL
你只需要一行代码。
new JSQLite(yourJsonString, yourDB).persist();
希望能帮助到你
考虑使用本地数据库在本地缓存服务器数据,这是大多数应用程序的做法,这里有一个很好的关于 android Android SQLite的 sqlite 教程
如果您只使用服务器中的一个或几个 JSONObjects,您可以使用SharedPreferences,编辑/更新会更容易和更快。例子
有关 Android 存储的更多信息:Android 存储
我正在开发一个连接到我们服务器中的 php-mysql 数据库的应用程序,而不是将查询结果保存在文件中,您应该将它(至少我是这么认为的)保存在内部 Android 数据库中(sqlite)。Android中有很多关于数据库的信息。
通过这个示例,您可以了解如何轻松使用 sqlite 和 ContentProviders(访问保存在数据库中的数据的更简洁的方法。
为了在您的数据库中正确保存 JSONArray,我建议您使用Jackson库来从 JSON 创建对象,从而使它们更易于保存。
最后,如果信息量比较少,你也可以使用 SharedPreferences ,这样可以更快地访问数据,因为它保存在移动内存中。
希望能帮助到你 :)
您可以尝试使用Realm.io一个简单的示例,如下所示:
public class City extends RealmObject {
private String city;
private int id;
// getters and setters left out ...
}
// Insert from a string
realm.beginTransaction();
realm.createObjectFromJson(City.class, "{ city: \"Copenhagen\", id: 1 }");
realm.commitTransaction();
问候!!!
//if you have already the json string
String str = json.toString();
//if you want to convert list to json (with Gson):
//foo - will be your list
String str = new Gson().toJson(foo );
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("pref_json_key", str);
prefEditor.apply();