我创建了一个ASP.NET C#MVC应用程序。我需要在数据库中插入一些记录,以下代码工作正常。我现在要做的是使用XML保存数据库中的记录。
我在tutorial中找到了一个示例,但我无法通过XML修改我的代码发送数据到MSSQL。
using (SqlCommand c = new SqlCommand("INSERT INTO PPL (Name, Age) VALUES (@Name,@age)", c)){
c.Open();
c.ExecuteNonQuery();}
有人可以帮助我吗?
更新
我创建了一个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 :(得分: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)
不要忘记在一个事务中打包过程语句。