【问题标题】:Storing large ArrayLists to SQLite将大型 ArrayList 存储到 SQLite
【发布时间】:2011-12-09 20:46:34
【问题描述】:

我正在开发一个不断下载大量数据的应用程序。

json 格式的数据,我使用 Gson 反序列化它。现在我将它存储在 SQLite 数据库中。我必须计算关系并将它们存储到关系数据库中。但是,这需要太多时间。

将类对象保存到db会方便得多。

反序列化后的数据如下所示:

Class A{
private String name;
private List<B> subItems;
}

Class B{
private String name;
private List<C> subItems
}

我能否以更简单的方式坚持这一点,例如使它们可序列化?如何才能做到这一点?

【问题讨论】:

    标签: android sqlite serialization


    【解决方案1】:

    是的,在您的情况下,序列化是一个更好的解决方案,它适用于 Android。以下示例取自http://www.jondev.net/articles/Android_Serialization_Example_%28Java%29

    序列化方法

      public static byte[] serializeObject(Object o) { 
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    
        try { 
          ObjectOutput out = new ObjectOutputStream(bos); 
          out.writeObject(o); 
          out.close(); 
    
          // Get the bytes of the serialized object 
          byte[] buf = bos.toByteArray(); 
    
          return buf; 
        } catch(IOException ioe) { 
          Log.e("serializeObject", "error", ioe); 
    
          return null;
        } 
    

    反序列化方法

      public static Object deserializeObject(byte[] b) { 
        try { 
          ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b)); 
          Object object = in.readObject(); 
          in.close(); 
    
          return object; 
        } catch(ClassNotFoundException cnfe) { 
          Log.e("deserializeObject", "class not found error", cnfe); 
    
          return null; 
        } catch(IOException ioe) { 
          Log.e("deserializeObject", "io error", ioe); 
    
          return null;
      } 
    

    【讨论】:

    • 非常感谢!你现在知道我是如何处理类之间的关系的吗? A 类与 B 类有一个列表。我是序列化每个类还是只序列化“顶级”类?
    • 使两个类都可序列化。我认为您只是序列化 A 类。
    • 好的。我将它们保存为 blob?
    • Sqlite 中没有Blob,但是我认为它应该可以工作。详情请查看:sqlite.org/datatype3.html,2.1.3。您也可以保存到磁盘,我指出的示例显示了这一点。
    • 顺便说一句!!!!不会影响性能。如果它的 json.为什么不只使用 json.ToString() 函数并将其存储到数据库。稍后使用 JSONParser 可以将 String 转换为 JSON。
    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2015-02-13
    • 2013-09-11
    • 2021-07-11
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多