前面一段时间为了赶项目的进度,一直在加班,现在空闲了下来将前面碰到的问题整理了一下,发现了一些十分有用的,在此记录下来,看能不能帮助到遇到同样问题的朋友,此文仅是自己个人的意见,若存在问题,还望不宁赐教。
在项目中,我们时候会遇到一些诸如一次性提交许多数据的时候,从惯性思维上来讲,我们首先想到的是循环。但是在此存在一个问题,若数据很多的时候,当前用户操作之后,会一直停留在当前页面,直到提交完成之后才能进行其他的操作,这样对于用户的体验度不好,同时对于程序和数据库之间产生了压力。这时对于我们来说,就急需的要找一个来替代好的方式来替代此方法。经过对他们的请教,发现了一次性提交数据的方式,那就是讲数据以xml的形式进行提交。这样只进行一次提交而完成了所以数据的操作。但是可能这会给数据库带来一定的压力,目前为止,自己还未想到更好的办法,希望有更好的方式我们大家能进行分享,下面若有错的地方,还请大家提出。
在sql中,数据类型相信大家都是十分的 清楚,总共有25种。通常我们也常使用其中对应的。但是对于xml好像自己却是没看到,下面就是一些对于xml的一些常用的操作:
1.在程序中将数据进行xml的拼接,在此适自己情况而定,我当前情况是如此的
1
|
DECLARE @Xml xml= ‘<br><Rates value = "99" OperationUserID="110"><br> <Rate><br> <Name last="a">aaa</Name><br> <UserID>126</UserID><br> </Rate><br> <Rate><br> <Name last="b">bbb</Name><br> <UserID>125</UserID><br> </Rate><br> <Rate><br> <Name last="c">ccc</Name><br> <UserID>123</UserID><br> </Rate><br> <Rate><br> <Name last="d">ddd</Name><br> <UserID>124</UserID><br> </Rate><br></Rates>‘
|
首先从根节点看下来,先获取当前根节点上的属性
1
2
|
SELECT
@Xml.value( ‘(/Rates/@value)[1]‘ , ‘int‘ ) AS
Value
,@Xml.value( ‘(/Rates/@OperationUserID)[1]‘ , ‘int‘ ) AS
OperationUserID
|
然后从根节点看下来,获取根节点下面的节点信息
1
|
SELECT
T.c.value( ‘Name[1]‘ , ‘varchar(20)‘ )<br> ,T.c.value( ‘UserID[1]‘ , ‘int‘ )<br> ,T.c.value( ‘(Name[1]/@last)[1]‘ , ‘varchar(20)‘ )<br> FROM
@Xml.nodes( ‘/Rates/Rate‘ ) T(c)
|
接下来的就是你取出数据之后,对数据进行的操作了,在这里我就不在献丑了,视自己的情况而定吧。
在此只列出了我在项目中遇到的情况,相信还有其他的一些方式,希望能有这方面兴趣的朋友,我们能共同的分享。有什么错的地方,还望指出。