数据库批量更新,添加!有关XML的操作
得到一个需要处理的XMl
private string GetSaveItem()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<menuCollection/>");
foreach (TreeNode node in trvAccessRight.CheckedNodes)
{
if (node != trvAccessRight.Nodes[0])
{
XmlElement content = xmlDoc.CreateElement("menuItem");
content.SetAttribute("menuID", node.Value);
xmlDoc.DocumentElement.AppendChild(content);
}
}
return xmlDoc.OuterXml;
}
将以上的获得的XMl字符串当参数传入存储过程中,
存储如下写
ALTER PROCEDURE [dbo].[usp_UserGroup_SetRight]
(@GroupID INT ,@ChangedBy VARCHAR(50) ,@MenuXml XML)
AS
BEGIN
--SET XACT_ABORT ON
BEGIN TRY
BEGIN TRANSACTION
--delete
DELETE
from tbl_SysUserGroupRight
WHERE GroupId = @GroupID
--insert
INSERT INTO tbl_SysUserGroupRight
(
GroupId
,MenuID
,ChangedBy
,ChangedOn
)
SELECT @GroupID
,menuList.row.value(N'@menuID' ,'VARCHAR(50)') AS MenuID
,@ChangedBy
,GETDATE()
from @MenuXml.nodes('/menuCollection/menuItem') AS menuList(row)
COMMIT TRANSACTION
RETURN 1
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
RETURN 0
END CATCH
更新可以借鉴上面的添加操作,
相关文档:
源xml文件
<?xml version="1.0" encoding="iso-8859-1"?>
<books>
<stock>
<name>The Picasso Code</name>
<author>Dan Blue</author>
<category>Fiction</category>
<description>Cubist paintings reveal a secret society of people ......
1. 基础:对XML进行简单的查询, 插入, 删除, 编辑操作
在数据量不是很大的情况下,可以用xml代替数据库存储数据,但是要定义xsd文件来验证xml文件,保证xml数据格式。
以下网页介绍了如何利用C#实现xml的查询,插入,删除和更新操作,这表明xml可以代替数据库存储一定量的数据。
http://blog.csdn.net/cmoonc/archive/20 ......
If XML data in the table is less than 32K for each record, then you can directly unload the data as char. If XML data exceeds 32K for some records, then you have to unload the common data and the XML data separately. First, create a template for unloading XML into a PDS: TEMPLATE LOBFRV DSN 'AAA. ......
转自http://www0.ccidnet.com/tech/guide/2001/10/08/58_3392.html
SAX概念
SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。
与DOM比较而言 ......