使用XML将数据保存到MSSQL Db

本文关键字:MSSQL Db 保存 数据 XML 使用 | 更新日期: 2023-09-27 18:09:47

我已经创建了一个ASP。NET c# MVC应用程序。我需要在数据库中插入一些记录,下面的代码工作得很好。我现在想做的是通过使用XML在DB中保存记录。

我在教程中找到了一个例子,但我无法修改我的代码,通过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/

更新

我创建了一个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添加这行(根据教程),但不知道如何编辑它,所以它在我的程序中工作。

这就是我所做的。

使用XML将数据保存到MSSQL Db

我认为一个好的方法是将您的类序列化为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)

不要忘记在事务中打包过程语句。