加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:38:12 所属栏目:百科 来源:网络整理
导读:我是ASP.NET和SQL Server的全新世界,所以请原谅我的无知… 如果我在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读