将表示FOR XML结果的XmlDocument插入数据库

时间:2016-02-16 16:10:31

标签: c# sql-server xml xmldocument

下面的代码从表中提取数据,并为您提供了一个XmlDocument:

using (SqlCommand command = CreateCommand())
{
    command.CommandType = CommandType.Text;
    command.CommandText = "SELECT * FROM SOME_TABLE FOR XML AUTO, ELEMENTS, ROOT('SomeEntities')";

    var xmlReader = command.ExecuteXmlReader();
    var xmlDoc = new XmlDocument();

    xmlDoc.Load(xmlReader);
}

为您提供这样的数据的XML表示,例如:

<SomeEntities>
    <Entity>
        <SomeKey>123<SomeKey/>
        <SomeValue>TestString<SomeValue/>
    <Entity/>
<SomeEntities/>

哪个好,但有没有办法对同一整行采用相同的XML表示,并将其重新插入数据库?

MSDNFOR XML可以使用INSERT,但没有提供任何示例,也许我使用了错误的搜索字词,但似乎没有太多关于此的内容。这似乎是你能做的事情,对吗?

有什么想法?很高兴提供更多代码或尝试创意,只需评论:)

1 个答案:

答案 0 :(得分:1)

没有自动的方法来实现这一目标。事实上,XML是非常通用的,并且几乎可以在任何结构和嵌套中携带几乎任何类型的数据。工具应该如何自动知道该做什么?

一些建议

1)您可以创建一个架构(XSD)并从中创建DataSet。使用结构上合适的DataSet,可以很容易地用XML“填充”它,然后使用DataSet的功能。

2)创建一个存储过程,将XML作为参数传递。此SP将读取数据并正确插入。

3)在C#中编写一些代码以达到你想要的效果。