【发布时间】:2013-06-16 10:17:30
【问题描述】:
所以我正在开发一个像 http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ 这样的项目,让我可以将我的数据库值显示到我的 android 应用程序 GUI。
我需要将我需要的数据库值保存到 android 内部存储中,以便即使我的应用程序未连接到服务器也可以访问它。有什么帮助吗?
谢谢
【问题讨论】:
标签: android
所以我正在开发一个像 http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ 这样的项目,让我可以将我的数据库值显示到我的 android 应用程序 GUI。
我需要将我需要的数据库值保存到 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();
希望对你有帮助
【讨论】:
考虑使用本地数据库将服务器数据缓存在本地,大多数应用都是这样做的,这里有一个很好的sqlite on android教程Android SQLite
如果您只使用服务器中的一个或几个 JSONObjects,您可以使用SharedPreferences,编辑/更新更容易、更快捷。 example
关于安卓存储的更多信息:Android Storage
【讨论】:
我正在开发一个连接到我们服务器中的 php-mysql 数据库的应用程序,而不是将查询结果保存在文件中,您应该将它(至少我是这么认为的)保存在内部 Android 数据库 (sqlite)。 Android中有很多关于数据库的信息。
通过example,您可以了解如何轻松使用 sqlite 和 ContentProviders(访问保存在数据库中的数据的更简洁的方式。
为了在您的数据库中正确保存 JSONArray,我建议您使用 Jackson 库,以便从 JSON 创建对象,使其更易于保存。
最后,如果信息量比较少,你也可以使用SharedPreferences,这样可以更快地访问数据,因为它保存在移动内存中。
希望对你有帮助:)
【讨论】:
//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();
【讨论】:
您可以尝试使用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();
问候!!!
【讨论】: