6

所以我正在做一个像这样的项目http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/让我向我的android应用程序显示我的数据库值图形用户界面。

我需要将我需要的数据库值保存到 android 内部存储中,这样即使我的应用程序没有连接到服务器,我也可以访问它。有什么帮助吗?

谢谢

4

6 回答 6

12

您可以将整个 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();
于 2013-06-16T10:36:16.990 回答
6

如果您选择本地 sqlite 数据库作为解决方案,我编写了一个轻量级实用程序来将您的 json 保存到 sqlite。

在这里结帐 git repo。https://github.com/wenchaojiang/JSQL

你只需要一行代码。

new JSQLite(yourJsonString, yourDB).persist();

希望能帮助到你

于 2013-09-09T12:01:02.080 回答
4

考虑使用本地数据库在本地缓存服务器数据,这是大多数应用程序的做法,这里有一个很好的关于 android Android SQLite的 sqlite 教程

如果您只使用服务器中的一个或几个 JSONObjects,您可以使用SharedPreferences,编辑/更新会更容易和更快。例子

有关 Android 存储的更多信息:Android 存储

于 2013-06-16T10:32:44.293 回答
2

我正在开发一个连接到我们服务器中的 php-mysql 数据库的应用程序,而不是将查询结果保存在文件中,您应该将它(至少我是这么认为的)保存在内部 Android 数据库中(sqlite)。Android中有很多关于数据库的信息。

通过这个示例,您可以了解如何轻松使用 sqlite 和 ContentProviders(访问保存在数据库中的数据的更简洁的方法。

为了在您的数据库中正确保存 JSONArray,我建议您使用Jackson库来从 JSON 创建对象,从而使它们更易于保存。

最后,如果信息量比较少,你也可以使用 SharedPreferences ,这样可以更快地访问数据,因为它保存在移动内存中。

希望能帮助到你 :)

于 2013-06-16T10:36:52.347 回答
2

您可以尝试使用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();

问候!!!

于 2016-03-28T20:36:53.967 回答
2
    //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();
于 2015-11-04T10:32:19.903 回答