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 字符串。怎么做?
任何人帮帮我。
如果您已经在使用Gson或计划使用它,那么我建议您将列表对象转换为Json 字符串,然后将其存储Text
在 SQLite 中的类型列中。使用相同的库从 json 字符串重构您的对象也非常容易。这只是我的一个建议,因为我个人喜欢处理字符串而不是玩字节。
对此没有内置功能,尤其是在仅将 arraylist 存储在 1 列中时。您可以将 A 类转换为字符串,并按特定字符分隔数据,但这不是正确的方法。
您需要一个新的数据库系统,如下所示:
你的桌子:
您的专栏 | 其他一些专栏 | 和另一个专栏 | ArraylistA_id
Arraylist一张表:
ArraylistA_id | 字符串1 | 字符串2 | ArraylistB_id
ArraylistB 表:
ArraylistB_id | 整数 | 双倍的
在这个数据库系统中,列“ArraylistA id”和“ArraylistB id”是指向另一个表中其他行的指针。因此,例如,当您的 arraylistA 存在于以下情况时:
数组列表 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
Arraylist一张表:
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
完整故事的要点是,您永远不应该将这样的数组列表存储在一列中,在执行此类操作之前,您需要一个适当的数据库系统。这是我在火车上的平板电脑上做的,当我到学校时,我会清理一下。
你可以试试这个方法。
public long insertString(String newString)
{
ContentValues newStringValue = new ContentValues();
newStringValue.put(KEY_STRING, newString);
return db.insert(DATABASE_TABLE, null, newStringValue);
}