有没有一种简单的方法将数组存储到SQL Server CE数据库中的单个列中?

时间:2013-04-04 13:55:09

标签: c# sql-server-ce webmatrix asp.net-webpages

我已经在这里查看了可能的答案(对于PHP,我认为):http://www.lateralcode.com/store-array-database/但是我无法找到序列化/反序列化的C#.net版本。

这是否与我上面链接中显示的方式相同,或者在给定环境的情况下,我应该使用完全不同的方法吗?

我只是不想为我的9个不同数组中的每一个中的12个值中的每一个都有一堆不同的列,所以如果有另一种方法来实现这一点(转换为byte []等)我我非常愿意听到它。

如果它有帮助,那么数组将是简单的string []数组。

3 个答案:

答案 0 :(得分:8)

将您的字符串数组转换为单个字符串,如下所示:

 var a = String.Join(",",arrays); 

 //or aim is to provide a unique separator, 
 //i.e which won't be the part of string values itself.
 var a= String.Join("~~",arrays); 

然后像这样取回来:

var arr = a.Split(',');
//or split via multiple character 
var arr = a.Split(new string[] { "~~" }, StringSplitOptions.None);

答案 1 :(得分:1)

尝试使用此序列化数组并在Blob类型的数据库中创建一个列来存储字节数组。

序列化:

 if(array == null)
        return null;
 BinaryFormatter bf = new BinaryFormatter();
 MemoryStream ms = new MemoryStream();
 bf.Serialize(ms, array);

反序列化:

String[] array = new String[10];        
BinaryFormatter bf = new BinaryFormatter();     
ms.Position = 0;        
array = (String[])bf.Deserialize(ms);

答案 2 :(得分:1)

  

我只是不希望每个都有一堆不同的列   我的9个不同阵列中的每一个都有12个值,所以如果还有另一个   实现这一目标的方法(转换为byte []等)我不止于此   我愿意听。

从上面的描述中,看起来您正在使用RDBMS。

您希望在单个列中存储多个值的事实会让设计出现问题。

我同意,拥有单独的列可能不是可行的方法,特别是如果将来每个数组中的项目数可能会发生变化。

考虑将这些数据分成一个单独的表,并使用原始表与外键关系进行1对多映射