将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个字符串的列表,如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;

namespace SerializeThingy
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> myList = new List<string>();
            myList.Add("One");
            myList.Add("Two");
            myList.Add("Three");
            NetDataContractSerializer serializer = new NetDataContractSerializer();
            MemoryStream stream = new MemoryStream();
            serializer.Serialize(stream,myList);
            stream.Position = 0;
            Console.WriteLine(ASCIIEncoding.ASCII.GetString(stream.ToArray()));
            List<string> myList2 = (List<string>)serializer.Deserialize(stream);
            Console.WriteLine(myList2[0]);
            Console.ReadKey();
        }
    }
}

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

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

猜你在找的C#相关文章