Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有一种简单的方法可以将数组存储到SQL Server CE数据库中的单个列中?_C#_Sql Server Ce_Webmatrix_Asp.net Webpages - Fatal编程技术网

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

C# 有没有一种简单的方法可以将数组存储到SQL Server CE数据库中的单个列中?,c#,sql-server-ce,webmatrix,asp.net-webpages,C#,Sql Server Ce,Webmatrix,Asp.net Webpages,我在这里回顾了可能的答案(我想是针对PHP):但我找不到C#net版本的序列化/反序列化 这是按照我上面的链接中所示的方式进行的,还是根据环境的不同,我应该使用完全不同的方法 我只是不想在我的9个不同数组中的12个值中的每一个都有一堆不同的列,所以如果有其他方法来实现这一点(转换为byte[],等等),我非常愿意听到它 如果有帮助,数组将是简单的字符串[]数组。尝试将数组序列化,并在Blob类型的数据库中创建一列来存储字节数组 序列化: if(array == null) re

我在这里回顾了可能的答案(我想是针对PHP):但我找不到C#net版本的序列化/反序列化

这是按照我上面的链接中所示的方式进行的,还是根据环境的不同,我应该使用完全不同的方法

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


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

尝试将数组序列化,并在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);

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

 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);
我只是不想在每一篇文章中都有一堆不同的专栏 9个不同数组中的每一个都有12个值 实现这一点的方法(转换为字节[]等)我比 愿意听

从上面的描述来看,您似乎正在使用RDBMS

您希望在一列中存储多个值的事实表明设计存在问题

我同意,使用单独的列可能不是一种方法,特别是如果每个数组中的项目数将来可能会发生变化的话


考虑将此数据分离到一个单独的表中,并与具有外键关系的原始表进行1对多映射

为什么不干脆
var a=String.Join(“,”数组)并将a存储在db中?然后像
var arr=a.Split(“,”)一样将其取回
使用这种方法时,最好使用分隔符,该分隔符不太可能出现在数组值中,如“| | | |”或类似的值。尝试调整此示例:@ManishMishra是否存在可以作为答案发布的分隔符?这似乎是一个非常好的方法,如果它有效的话,它应该是一个被接受的答案(我不明白为什么它不会,只要更像“| | |”被用作分隔符,而不是像Vladimirs建议的那样使用“,”)。你能展示一个使用这种方法的反序列化示例吗。另外,可以肯定的是,这个答案可以用于SQLServerCE(使用WebMatrix)吗?终于有机会了解一下+1用于通过序列化/反序列化(串联字符串可能不适用于所有人)。如果可以的话,我会给另外一个+1,因为我展示了我不知道的新方法!谢谢我知道这很旧,但请不要使用二进制格式化程序,它现在被归类为不安全代码。您可以使用“,”作为分隔符进行编辑,因为该值很容易成为字符串本身的自然文本,因为它们是从用户输入中存储的。基本上,这个想法是以某种方式连接字符串,稍后您可以,轻松拆分以获得原始字符串数组,当然,我明白了,我只是想到了未来的观众,但我想如果他们不明白,他们应该使用字符串值中唯一的分隔符,这可能对他们没有任何帮助,无论如何,哈哈。感谢你的回答,现在看来很明显,但我知道我必须确保我的答案没有违反任何最佳实践或任何东西。不过,有一件事,当使用引发错误的“Split()”时,您可能需要更改示例代码(“Split的最佳重载方法有一些无效参数”)。我说,但是在查看了语法之后,我看到了您向我展示的内容,所以我想是时候看看“我的”值了:)我想知道我是否忽略了这一点。我知道什么是一对多的关系,但我已经很久没有实践过这种方法了。在这里展示一个这样的例子(对未来的观众来说)可能是有益的。考虑到这个场景,这是一个非常好的答案。这篇维基百科文章解释了如何创建外键