【发布时间】:2016-02-16 16:10:31
【问题描述】:
下面的代码从表格中提取数据并为您提供一个 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 表示,并将其重新插入到数据库中?
MSDN 说FOR XML 将与INSERT 一起使用,但没有给出示例,也许我使用了错误的搜索词,但似乎没有太多关于这方面的内容。这似乎是您可以做到的,对吧?
有什么想法吗?很高兴提供更多代码或尝试想法,请发表评论:)
【问题讨论】:
-
我理解正确吗?您确实不想将 XML 存储到数据库中,而是将 XML 内的数据存储回数据库中的结构化表中,对吗?
-
需要插入客户端生成的XML(上传)还是插入其他sql语句生成的XML(select..for xml)?
-
没错! XML 表示来自数据库的结果集。我会在问题中添加一些 XML 来说明这一点。
-
试试这里显示的方法:stackoverflow.com/questions/21378729/…,虽然它不使用 XML FOR。
-
数据是由 XML FOR 查询在我打算插入的同一张表上生成的。 @Khale_Kitha 我见过各种类似的想法,但我认为必须有一种比定义所有列和数据类型更通用的方法来做到这一点?
标签: c# sql-server xml xmldocument