2013-04-18 55 views
1

我已經創建了一個ASP.NET C#MVC應用程序。我需要在數據庫中插入一些記錄,並且以下代碼正常工作。我現在想要做的是使用XML將記錄保存在數據庫中。使用XML將數據保存到MSSQL Db

我在tutorial中發現了一個例子,但我無法修改我的代碼通過XML將數據發送到MSSQL。

   using (SqlCommand c = new SqlCommand("INSERT INTO PPL (Name, Age) VALUES (@Name,@age)", c)){ 
       c.Open(); 
       c.ExecuteNonQuery();} 

有人可以幫我嗎?

**本教程http://www.mssqltips.com/sqlservertip/2118/scripts-to-use-xml-to-insert-and-update-rows-in-a-sql-server-table/

UPDATE

我創建了一個SP

CREATE PROCEDURE INSERT_PPL 

@NAME nchar(200), 
@AGE nchar(3), 

AS 

INSERT INTO PPL(NAME,AGE) 

VALUES (@NAME,@AGE) 

現在我想用EXEC sp_xml_preparedocument @hdoc OUTPUT, @xmlData加入這行(按教程),但不知道如何編輯它以便它在我的程序中起作用。

這就是我所做的一切。

+0

向我們展示您的嘗試。 –

+2

我試過的東西已經在上面演示過了。 –

+1

「以下代碼正常工作」...「但我無法修改我的代碼...」 - 請告訴我們您嘗試過哪些修改。告訴我們你卡在哪裏。我們不會爲你做你的工作。 –

回答

0

我認爲一個好方法是將您的類序列化爲XML並將它們傳遞給SQL。對於服務器的一部分,一個路徑開始將是:

create table Books (BookID int identity, Title varchar(50), Rating int); 

    create table Chapters (BookID int, Title varchar(50), Sequence int); 

    go 

    create procedure AddBook 
     @book xml 
    as 
    begin 

     insert Books (Title, Rating) 
     select 
      n.value('@Title', 'varchar(50)'), 
      n.value('@Rating', 'int') 
     from 
      @book.nodes('/Book') x(n); 

     declare @bookID int; 
     set @bookID = scope_identity(); 

     insert Chapters (BookID, Title, Sequence) 
     select 
      @bookID, 
      n.value('@Title', 'varchar(50)'), 
      n.value('@Sequence', 'int') 
     from 
      @book.nodes('/Book/Chapters/Chapter') x(n); 

    end; 

    go 

    declare @data xml; 
    set @data = ' 
    <Book Title="New Book" Rating="9"> 
     <Chapters> 
      <Chapter Title="Chapter 1" Sequence="1" /> 
      <Chapter Title="Chapter 2" Sequence="2" /> 
      <Chapter Title="Chapter 3" Sequence="3" /> 
     </Chapters> 
    </Book>' 

    exec AddBook @data; 

    select * from Books; 
    select * from Chapters; 

結果:

BookID  Title            Rating 
    ----------- -------------------------------------------------- ----------- 
    1   New Book           9 

    (1 row(s) affected) 

    BookID  Title            Sequence 
    ----------- -------------------------------------------------- ----------- 
    1   Chapter 1           1 
    1   Chapter 2           2 
    1   Chapter 3           3 

    (3 row(s) affected) 

而且不要忘記收拾在一個交易過程中的語句。