xml数据类型基本用法
来源:互联网 发布:mac oui ieee.org 编辑:程序博客网 时间:2024/05/16 18:44
由于个人水平有限,在此仅介绍SQL Server 2005这xml数据类型的简要用法,并将使用xml数据类型与使用xml文件作简单比较。
注:以下所有程序均在SQL Server 2005或Visual Studio 2008中调试通过
一、简要用法:
--新建一张表create table deliveryschedule(scheduleid int identity primary key,scheduledate datetime,deliveryroute int,deliverydriver nvarchar(20),deliverylist xml)--插入一条纪录insert into deliveryschedulevalues(getdate(),3,'Tom','<?xml version="1.0" ?><deliverylist><delivery salesorderid="43659"><customername>Jason Statham</customername><address>6126 North Sixth Street,Rockhampton</address></delivery><delivery salesorderid="43660"><customername>Jet Li</customername><address>6445 Cashew Street,Rockhampton</address></delivery></deliverylist>')select * from deliveryschedule;--字段的方法:--value()是取得属性的值、或元素的文本--exist()是判断是否满足某种条件--query()获取子节点本身,返回的就是XML类型的数据--modify()修改- -replace /insert/ delete--modify('replace value of (某节点元素) with "内容"')--node()类似query(),取得子节点,将XML数据转换成表--查询delivery元素select deliverydriver,deliverylist.query('/deliverylist/delivery') as deliveriesfrom deliveryschedule;--查询送货单中第一个递送的地址,字段名.value()取的是对应节点的值--[1]:第一个address元素select deliverylist.value('(/deliverylist/delivery/address)[1]','nvarchar(100)') as deliveryaddressfrom deliveryschedulewhere scheduleid=1--查找为订单送货的送货员是谁?--1代表true,代表falseselect deliverydriverfrom deliveryschedulewhere deliverylist.exist('/deliverylist/delivery[@salesorderid=43659]')=1--更改送货地址update deliveryscheduleset deliverylist.modify('replace value of (/deliverylist/delivery/address/text())[1]with "7194 Fourth St.Rockhampton"')where scheduleid=1
二、在进行程序开发时,可以使用xml文件代替xml类型的字段,以插入操作为例:
XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(filepath); XmlNode xmlnode = xmldoc.SelectSingleNode("userinfo"); XmlNodeList xmlnodelist = xmldoc.SelectSingleNode("userinfo").ChildNodes; bool isexist = false; for (int i = 0; i < xmlnodelist.Count; i++) { XmlElement xmlelem = (XmlElement)xmlnodelist.Item(i); string struserid = xmlelem.ChildNodes[0].FirstChild.Value.Trim(); if (struserid == "003") { //将userid为003的记录的usersex修改为1 xmlelem.ChildNodes[3].FirstChild.Value = "1"; isexist = true; break; } } if (isexist) { //保存修改 xmldoc.Save(filepath); tsslStatus.Text = "修改成功"; }
xml文件为:
<?xml version="1.0" encoding="utf-8"?><userinfo> <user> <userid>001</userid> <username>卓</username> <userage>21</userage> <usersex>0</usersex> <userbirth>1991-1-1</userbirth> </user></userinfo>
使用xml数据类型实现同样功能,仅需一条SQL语句:如上“更改送货地址”语句。
代码量减少50%左右,且易修改。
三、关于xml数据类型的高级应用参考:http://blog.csdn.net/pengxuan/article/details/6853985#t0
- xml数据类型基本用法
- XML的基本数据类型
- XML Schema基本用法
- XML的基本用法
- Redis基本数据类型及其用法
- maven pom.xml基本用法
- JAVA八大基本数据类型及Scanner用法
- 【hive内置基本数据类型】 和 【内置复合数据类型用法】
- Xml序列化器的基本用法
- XML与JSON基本用法初探
- xml解析之SAX解析基本用法
- MyBatis XML方式的基本用法
- C语言基本数据类型:整型(int)用法详解
- const在基本数据类型和指针类型中的用法小结
- 基本数据类型
- 基本数据类型
- 基本数据类型
- 基本数据类型
- 线程同步的总结
- Drupal 7 客制化主题原理
- 牛腩新闻发布系统——后台登录界面生成验证码
- eclipse-SDK-3.7-win32;eclipse-java-indigo-win32;eclipse-jee-indigo-win32 区别(ZZ)
- 七夕恋歌
- xml数据类型基本用法
- 回来再看。。。
- 希尔排序(java实现)
- C++基础编程练习14
- 数据库的范式
- 从编译器提示的信息去解决问题
- Query_Find Form开发入门
- 线程那点事
- c++基础编程练习13