将C#数据结构存储到SQL数据库中

前端之家收集整理的这篇文章主要介绍了将C#数据结构存储到SQL数据库中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是ASP.NET和sql Server的全新世界,所以请原谅我的无知…

如果我在C#中有一个数据结构(例如,我们只说一个存储一些字符串的向量),是否可以在sql表中存储向量的内容?我想这样做,以便快速将该数据转换为矢量格式尽可能快,而不必按元素构造它.几乎像将二进制数据写入一个文件,然后读取它并将其复制到一个分配的结构中.

我在sql Server 2008上创建了一个表,其中一个字段定义为VARBINARY(MAX).我以为我会从这开始.

有人会告诉我一个例子,说明我将如何从这个字段中存储和检索一个10字符串的向量?这是否可能(我不能想到为什么不)?

谢谢!

解决方法

首先,简单地创建关系结构并将对象映射到数据库中的字段有明显的路线.

其次,如果您有一个可序列化的对象,则可以将其存储在sql Server中.我曾经做到这一点,并且在sql Server中使用了Text数据类型来存储XML.

意见:我喜欢将序列化对象存储为XML而不是二进制数据.为什么?因为您可以实际读取那里的内容(用于调试),而在sql Server中,您可以使用XQuery从序列化对象中选择数据.从我的经验来看,使用二进制数据的性能获益并不值得,因为数据更容易调试,可以以伪装关系的方式使用.看看SQL Server’s XQuery capabilities.即使你不打算立即使用它,没有理由把自己放在一个角落.

你可以看一些使用NetDataContractSerializer的例子.

我相信你所说的一个向量是List<>在C#中.看看System.Collections.Generic.您可以使用NetDataContractSerializer序列化3个字符串的列表,如:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.Serialization;
  6. using System.IO;
  7.  
  8. namespace SerializeThingy
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. List<string> myList = new List<string>();
  15. myList.Add("One");
  16. myList.Add("Two");
  17. myList.Add("Three");
  18. NetDataContractSerializer serializer = new NetDataContractSerializer();
  19. MemoryStream stream = new MemoryStream();
  20. serializer.Serialize(stream,myList);
  21. stream.Position = 0;
  22. Console.WriteLine(ASCIIEncoding.ASCII.GetString(stream.ToArray()));
  23. List<string> myList2 = (List<string>)serializer.Deserialize(stream);
  24. Console.WriteLine(myList2[0]);
  25. Console.ReadKey();
  26. }
  27. }
  28. }

该示例只是序列化一个列表,将序列化输出到控制台,然后证明它在正确的水平正确.我想你可以看到,从这里可以将内存流转储到一个字符串中,并将其写入数据库,或使用另一种流类型而不是内存流来实现.

请记住参考System.Runtime.Serialization以访问NetDataContractSerializer.

猜你在找的C#相关文章