2013-04-04 56 views
7

我在这里回顾了可能的答案(对于PHP,我认为):http://www.lateralcode.com/store-array-database/但我无法找到C#.net版本的serialize/deserialize。有没有简单的方法将数组存储到SQL Server CE数据库中的单个列中?

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

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

如果它有帮助,数组将是简单的字符串[]数组。

+0

你为什么不干脆'VAR一个=的string.join(“”阵列);'并存储在db?并将其取回为'var arr = a.Split(“,”);' – 2013-04-04 13:57:16

+1

使用该方法更好地使用分隔符,该分隔符不太可能存在于数组中,例如“|||”或类似的东西。 – Vladimirs 2013-04-04 13:59:47

+0

尝试适应此示例:http://sqlcebulkcopy.codeplex.com – KF2 2013-04-04 14:00:24

回答

6

转换您的字符串数组转换成一个String像如下:

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); 
+0

您是否可以使用“,”作为分隔符进行编辑,因为它们是从用户输入存储的,因为该值可能很容易是字符串本身的自然文本? – VoidKing 2013-04-04 14:31:55

+0

基本上的想法是以某种方式加入你的字符串,以后你可以很容易地将它拆分为你的原始字符串数组 – 2013-04-04 14:33:11

+0

对,当然,我明白了,我只是想着未来的观众,但我想这是真的如果他们没有得到他们应该使用他们的字符串值独特的分隔符,可能没有帮助他们,无论如何,哈哈。感谢你的回答,现在看起来很明显,但我知道我必须确保我的回答没有违反任何最佳做法或任何事情。 – VoidKing 2013-04-04 14:37:08

1

试试这个seralize数组并在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); 
+0

你可以用这种方法展示一个反序列化的例子。另外,可以肯定的是,这个答案可以用于sql-server-ce(使用WebMatrix)吗? – VoidKing 2013-04-04 14:03:27

+0

终于有机会看看这个。 +1通过序列化/反序列化来完成此操作(连接字符串可能不适用于所有人)。如果我能向我展示我不知道的新方法,我会再给+1。谢谢! – VoidKing 2013-04-05 16:24:12

1

我只是不希望有一堆不同的列的每一个在我的每9个不同阵列的 12个值,所以如果有另一个 方法来实现这一(转换为byte [],等等)我比 愿意听到它。

从以上描述中可以看出,您使用的是RDBMS。

事实上,你想在单个列中存储多个值的问题与设计的尖叫。

我同意有分开的列可能不是要走的路,特别是如果每​​个阵列中的项目数量可能在未来发生变化。

考虑这个数据分离成单独的表并具有1对多的映射与原来的表的外键关系

+0

我想知道我是否忽略了这一点。我知道什么是一对多的关系,但我从未实践过这种方法。在这里展示一个例子(对于未来的观众)可能是有益的。考虑到这种情况,这是一个非常好的答案。 – VoidKing 2013-04-10 20:02:05

+0

这篇维基百科的文章解释了如何创建一个外键http://en.wikipedia.org/wiki/Foreign_key – alvarorahul 2013-04-10 21:09:21

相关问题