如何在sqlite db中存储自定义arraylist并检索它?

时间:2012-06-13 06:47:20

标签: android sqlite

class A{
String str1="";
String str2="";
ArrayList<B> barr=new ArrayList<B>();

}


class B{
int a;
double d;
}


**ArrayList<A> aArr=new ArrayList<A>();**

我想将aArr列表存储在列中的sqlite db中并检索它。

我想我可以将它转换为JSON String。怎么做?

任何人帮助我。

3 个答案:

答案 0 :(得分:0)

如果您已经在使用Gson或计划使用它,那么我建议您将列表对象转换为 Json字符串,然后将其存储在{{1}中在SQLite中键入列。使用相同的库从json字符串重建对象也非常容易。这只是我的一个建议,因为我个人喜欢处理字符串而不是使用字节。

答案 1 :(得分:0)

没有功能构建,特别是在只有1列存储arraylist时。您可以将A类转换为字符串,并按特定字符分隔数据,但这不是正确的方法。

您需要一个新的数据库系统,如下所示:

你的表:

你的专栏|其他一些专栏|和另一列| ArraylistA_id

ArraylistA表:

ArraylistA_id | String1 | String2 | ArraylistB_id

ArraylistB表:

ArraylistB_id | int |双

在此数据库系统中,“ArraylistA id”和“ArraylistB id”列是指向另一个表中其他行的指针。例如,当您的arraylistA存在以下内容时:

Arraylist A {

{“TEST”,“TEST”,ArrayListB {{1,1.0},{2,2.0},{3,3.0}}}

{“HELLO”,“HELLO”,ArrayListB {{9,9.0},{8,8.0},{7,7.0}}}

};

比sql数据库中的记录如下:

你的表:

Your Column | Some other Column | and another Column | ArraylistA_id

                                                           1

ArraylistA表:

ArraylistA_id | String1 | String2 | ArraylistB_id

   1           TEST      TEST          1

   2           HELLO     HELLO         2

ArraylistB表:

ArraylistB_id | int | double

  1            1      1.0

  1            2      2.0

  1            3      3.0

  2            9      9.0

  2            8      8.0

  2            7      7.0

完整故事的要点是你永远不应该只在一列中存储这样的arraylist,在做这样的事情之前你需要一个合适的数据库系统。这是我在火车上的平板电脑上做的,当我到达学校时,我会稍微清理一下。

答案 2 :(得分:0)

你可以尝试这种方法。

public long insertString(String newString) 
  {
    ContentValues newStringValue = new ContentValues();

    newStringValue.put(KEY_STRING, newString);

    return db.insert(DATABASE_TABLE, null, newStringValue);
  }