1

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(チュートリアルに従って)この行を追加することを想定していますが、それを編集する方法がわからないので、私のプログラムで動作します。

これが私がやったことのすべてです。

4

1 に答える 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)

また、プロシージャ ステートメントをトランザクションにパックすることを忘れないでください。

于 2013-04-25T19:17:18.397 に答える