【问题标题】:Importing XML Data From XML File To SQL Database将 XML 数据从 XML 文件导入 SQL 数据库
【发布时间】:2012-03-12 18:34:17
【问题描述】:

我是 C# 新手,一直致力于学习数据库。目前我正在尝试从一个 XML 文档中导入数据,该文档的项目存储如下:

   <CityData>
        <City>Ada</City>
        <County>Olmsted</County>
        <AreaCode>507</AreaCode>
        <Founded>1900</Founded>
        <CityWebSite>www.adacity.com</CityWebSite>
        <Population>1200</Population>
        <Zipcode>56996</Zipcode>
        <ZipcodeMax>57656</ZipcodeMax>
    </CityData>

我正在尝试将每个数据集合保存到 SQL Express 数据库中的不同行。我已经能够在数据库中存储其他信息,我只是不知道如何使用 XML 文档来做到这一点。数据库与我正在编写的 C# 程序一起本地存储在我的机器上。我有一个新表,其中列的名称和排序类似于 XML 文档模式。我在网上找到的教程是针对 .asp 程序的。有没有人这样做过?这是一个 C# 表单程序。

【问题讨论】:

  • 您使用的是哪个版本的 .net?我问是因为 LINQ 可以让这很容易。
  • 请不要在标题末尾添加“C#”。这就是标签的用途。
  • 我正在使用带有 SQL Server Express 的 Visual C# Studio 2008。我现在要查找 LINQ,谢谢。

标签: c# sql xml forms


【解决方案1】:

这将完成您的工作。请确保将 filePath\fileName.xml 替换为 xml 的完整路径,并根据您的 xml 更改 /dataroot/CityData (在底部)。 sql 也应该能够访问该文件。

Declare @xml XML

Select  @xml  = 
CONVERT(XML,bulkcolumn,2) FROM OPENROWSET(BULK 'filePath\fileName.xml',SINGLE_BLOB) AS X

SET ARITHABORT ON

Insert into [YourTableName] 
        (
            City,County,AreaCode,Founded,CityWebSite,[Population],Zipcode,ZipcodeMax
        )

    Select 
        P.value('City[1]','VARCHAR(100)') AS City,
        P.value('County[1]','VARCHAR(100)') AS County,
        P.value('AreaCode[1]','VARCHAR(100)') AS AreaCode,
        P.value('Founded[1]','VARCHAR(100)') AS Founded,
        P.value('CityWebSite[1]','VARCHAR(100)') AS CityWebSite,
        P.value('Population[1]','VARCHAR(100)') AS Population,
        P.value('Zipcode[1]','VARCHAR(100)') AS Zipcode,
        P.value('ZipcodeMax[1]','VARCHAR(100)') AS ZipcodeMax,

    From @xml.nodes('/dataroot/CityData') PropertyFeed(P)

【讨论】:

  • 这不是只有在 XML 文件只有一个 CityData 元素时才有效吗?
  • 也许是我缺乏经验让我退缩了,但我无法使用“Declare”,我可以使用 Select,我认为我没有遗漏顶部的任何 using 语句。我应该做些什么来获得 Declare @xml XML?
  • @CFL_Jeff 我假设 CityData 作为 dataroot 的子节点。
  • 这是一个查询,应该在 sql server 查询窗口上运行,或者您可以将其转换为存储过程。
  • @Indikaf 如果文件中有多个 CityData 元素怎么办?
【解决方案2】:

首先,你将deserialize XML 转换成 C# 对象。

然后,你serialize将数据从对象导入数据库。

你很幸运,C# makes XML Deserialization a snap。

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 2010-10-17
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    相关资源
    最近更新 更多