Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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# 在数据库中插入表示XML结果的XmlDocument_C#_Sql Server_Xml_Xmldocument - Fatal编程技术网

C# 在数据库中插入表示XML结果的XmlDocument

C# 在数据库中插入表示XML结果的XmlDocument,c#,sql-server,xml,xmldocument,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 = comm

下面的代码从表中提取数据,并提供一个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表示,并将其插入到数据库中

表示FOR XML将与INSERT一起使用,但没有给出示例,也许我使用了错误的搜索词,但在这方面似乎没有太多内容。这似乎是你能做的,对吧


有什么想法吗?很乐意提供更多代码或尝试想法,只需评论:

实现这一点没有自动的方法。事实上,XML非常通用,可以在几乎任何结构和嵌套中承载几乎任何类型的数据。工具应该如何自动知道该做什么

一些建议

1您可以创建一个模式XSD,并由此创建一个数据集。使用结构合适的数据集,可以很容易地用XML填充数据集,然后使用数据集的功能

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


3用C语言编写一些代码以实现您的目标。

我是否正确理解您的意思?您不想将XML存储到数据库中,而是将XML中的数据存储回数据库中的结构化表中,对吗?您需要插入客户端上载时生成的XML还是插入另一条sql语句生成的XML选择..for XML?这是正确的!XML表示来自数据库的结果集。我将在问题中添加一些XML来说明这一点。尝试此处显示的方法:,尽管它不使用XML。数据是由XML生成的,用于查询我要插入的同一个表@Khale_Kitha我见过很多这样的想法,但我认为一定有一种比定义所有列和数据类型更通用的方法来实现这一点?谢谢@Shnugo!所有这些都是好主意,我开始用C语言开发解决方案。我不希望工具能做到这一点。更有可能的是,有一些文档记录不完整、晦涩难懂的方法,通过这些方法,XML FOR、元素或XmlWriter或其他东西可能会使这项工作发生逆转。@GP24,如果您喜欢我的答案,请投赞成票。选票是燃料,所以我们要用它来运转。我沉迷于代表积分:-好了,我的朋友:再次感谢你的想法。