【问题标题】:Insert XML from Stored Procedure in C#在 C# 中从存储过程插入 XML
【发布时间】:2015-03-15 17:32:31
【问题描述】:

我正在尝试将存储过程中的 xml 插入表中。

做不到。

我的方法:

CREATE PROCEDURE [dbo].[InsertXML]
    @xml XML
AS
BEGIN
      SET NOCOUNT ON;

      INSERT INTO [GpsCorporateCardIncentive](CCFrom, CCTo, CCIncentive)
         SELECT
             [Table].[Column].value('From[1]','DECIMAL(5,3)') AS CCFrom, 
             --ATTRIBUTE
             [Table].[Column].value('To[1]','DECIMAL(5,3)') AS CCTo, 
             --TAG
             [Table].[Column].value('IncentiveAmount[1]','DECIMAL(5,3)') AS CCIncentive --TAG
        FROM
            @xml.nodes('/ArrayOfIncentive/Invcentive') as [Table]([Column])
END

我的 xml 看起来像这样:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfIncentive xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Incentive>
    <From>65.000</From>
    <To>89.000</To>
    <IncentiveAmount>25.000</IncentiveAmount>
  </Incentive>
  <Incentive>
    <From>67.000</From>
    <To>90.000</To>
    <IncentiveAmount>25.000</IncentiveAmount>
  </Incentive>
</ArrayOfIncentive>

C# 代码:

public static void SaveXML(string filePath)
{
    string xml = File.ReadAllText(filePath);           

    using (SqlConnection con = new SqlConnection(GetConnectionString()))
    {
        con.Open();

        SqlCommand cmd = new SqlCommand("InsertXML", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@xml", xml);                

        cmd.ExecuteNonQuery();
    }
}

但我没有看到更改被插入到数据库中。

我也没有收到任何错误。

请帮忙。

【问题讨论】:

    标签: c# sql-server xml


    【解决方案1】:

    @xml.nodes('/ArrayOfIncentive/Invcentive') as Table

    可能是拼写错误: 看,你在 FROM 语句中有 Invcentive,但在你的 XML 中你没有这样的标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多