有没有办法在一列表中存储整数数组?我想这样的o/p:
ident | value | count ----------------+------------------------------------------------------------------------------------------------------------------------+------- 563 | [0:10]={"(0,0)","(1,100)","(2,200)","(3,300)","(4,400)","(5,500)"} | 6
这个我已经通过postgres得到了解,但我也希望从sqlite获得相同的o/p.这里列值存储一个数组.我通过BLOB尝试了它,但它无法正常工作.有人告诉我关于序列化的方式,但我不知道该怎么做.
SQLite3不直接支持数组.见这里支持的类型.基本上,它只有Ints,Floats和Text.
要完成您的需要,您必须使用自定义编码,或使用FK,即创建另一个表,其中数组中的每个项目都存储为一行.
对不起Necro,我自己遇到了问题并找到了解决方案.
如前所述,SQLite不支持数组,因此您无法存储它们.试试这个,我有同样的问题;
您可以将它们存储为大字符串,并使用字符串函数或正则表达式将它们解析回其类型,而不是单独存储数组元素.一个C#的例子
int[] myArray = new int[] {8,4,345,378,34456,7}; string Arraystring = myArray[0].ToString(); for(int i = 1; i < myArray.Length; i++) { Arraystring += "," + myArray[i].ToString(); }
这会将数组转换为单个字符串,现在我们将字符串作为字符串插入表中,当您读取字符串时,使用此代码将数组返回.另一个C#例子
string value; //assign this via Reader string[] tokens = values.Split(','); int[] myItems = Array.ConvertAll(tokens, int.Parse);
这只适用于单维数组,在解析字符串时多维可能会变得棘手.