2015-03-15 2 views
0

Я пытаюсь вставить xml из хранимой процедуры в таблицу.Вставить XML из хранимой процедуры в C#

Невозможно это сделать.

Мой подход:

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(); 
    } 
} 

Но я не вижу изменения будут вставлены в базу данных.

У меня также нет ошибок.

Пожалуйста, помогите.

ответ

1

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

Это может быть орфографическая ошибка: см, у вас есть Invcentive в FROM заявлении, но в вашем XML не имеют таких меток.

Смежные вопросы