.net及SQL操作XML

C#代码:

cWay类型是List<ContactWay>

XMLContactWayClass wayClass = new XMLContactWayClass();
XmlContactWay xmlWay = null;
List<XmlContactWay> list = new List<XmlContactWay>();
foreach (ContactWay way in cWay)
{
      xmlWay = new XmlContactWay();
      xmlWay.ContactWayType = way.ContactWayType;
      xmlWay.Way = way.Way;
      list.Add(xmlWay);
}
wayClass.XmlContactWay = list.ToArray();
string wayData = XmlHelper.ToXml<XMLContactWayClass>(wayClass);
wayData = wayData.Replace("<?xml version="1.0" encoding="utf-8"?>", "");

_addrDatabase.MakeInParam("@ContactWay", SqlDbType.Xml, int.MaxValue, wayData)

SQL代码:添加

ALTER PROCEDURE [dbo].[Addr_SP_Contactor_AddMutilField] 
    @ContactWay XML
AS
SET NOCOUNT ON
/*
<ContactWay>
    <Way>
        <WayType>1</WayType>
        <WayField>13810712519</WayField>
    </Way>
    <Way>
        <WayType>3</WayType>
        <WayField>346425159@qq.com</WayField>
    </Way>
</ContactWay>
*/

INSERT INTO dbo.Addr_TB_ContactField
(
    Field,
    FieldType
)
SELECT
    Field = T.c.value('(./WayField/text())[1]', 'VARCHAR(200)'),
    FieldType = T.c.value('(./WayType/text())[1]', 'INT')
FROM @ContactWay.nodes('/ContactWay/Way') AS T(c)

SQL代码:更新

UPDATE A
SET A.MemberCount = A.MemberCount + 1
FROM dbo.Addr_TB_ContactGroup A
INNER JOIN 
(
    SELECT ContactGroupID= T.b.value('(./GroupID/text())[1]', 'INT')
    FROM @ContactGroup.nodes('/ContactGroup/Group') AS T(b) 
) B
on A.ContactGroupID= B.ContactGroupID
WHERE A.SeqNo=@SeqNo AND A.CompID=@CompID 
原文地址:https://www.cnblogs.com/dreamshallow/p/3461656.html