亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sql server2000的openxml特性.txt

?? SQL Server2000提供了OpenXML特性,我們可以很方便的用OpenXML特性來代替傳統的行集結果
?? TXT
字號:
SQL Server2000的OpenXML特性


SQL Server2000提供了OpenXML特性,我們可以很方便的用OpenXML特性來代替傳統的行集結果,同樣我們也可以使用定義好的XML文檔作為輸入的數據,這樣也為我們的數據移植帶來的巨大的便利。

同時,SQL Server2000中也提供了存儲過程,用微軟的話說,只有設計成存儲過程,才算是”cleaner separation of code from the middle-tier”,這樣做是很好的。應用程序訪問數據庫的數據并不是直接的與數據庫表打交道,而是通過存儲過程的運行來獲取所需要的數據。這樣的設計有一個好處就是,避免了頻繁的表操作,而通過運行在服務器端的存儲過程可以極大的提高運作效率和提升訪問數據的速度,同時也很好的屏蔽了數據庫表的邏輯,使得數據庫訪問變成了數據庫提供的服務訪問。

既然OpenXML和存儲過程都可以提高SQL Server2000的性能,那么能否把這種技術結合起來了?答案是肯定的,下面我們就來看看怎么在存儲過程中使用OpenXML.

以下是一個使用了OpenXML特性的存儲過程:

*******************************************************************************


-------------------------------------------------------------------------------

-- upArchiveMsgInsertMsg

-------------------------------------------------------------------------------

/******************************************************************************

     這是一個公文消息xml文檔的實例

     

     declare @xml varchar(8000)

     SET @xml='<?xml version="1.0" encoding="gb2312" ?> 

         <ArchiveMsg

         Title="jiangsuer" UserID="Admin" Author="湖北" 

         SendTime="1/1/2001" Department="mse" 

         AttachFile="hust" 

         ReceiveList="younther" Body="hustwelcome">

              <MsgList UserID="Admin"/>

           <MsgList UserID="Anime"/>

              <MsgList UserID="Tiger"/>

           </ArchiveMsg>'


     exec upArchiveMsgInsertMsg @xml

     

*******************************************************************************/

//這個運行存儲過程先在ArchiveMsg表中插入一條公文信息,并根據該條公文信息的MsgID和接受者列表,再在MsgList表插入每個接受者的UserID和MsgID,這些信息從xml中獲取。




ALTER PROCEDURE upArchiveMsgInsertMsg

     (

         @xml         varchar(8000)

     )

AS

     DECLARE @idoc int      -- xml doc

     DECLARE @MsgID int    -- new order

     DECLARE @SendTime datetime

        -- 解析XML文檔

     EXEC sp_xml_preparedocument @idoc output, @xml

     SET NOCOUNT ON 

     DECLARE @CurrentError int

     BEGIN TRANSACTION

     -- 開始更新數據的事務

     

     SELECT @SendTime=SendTime

     FROM OpenXML(@idoc, '/ArchiveMsg')

     WITH ArchiveMsg

     

INSERT INTO ArchiveMsg(Title,UserID,Author,SendTime,Department,ReceiveList,Body,AttachFile)

     SELECT Title,UserID,Author,SendTime,Department,ReceiveList,Body,AttachFile

     FROM OpenXML(@idoc, '/ArchiveMsg')

     WITH ArchiveMsg

     

         -- 錯誤檢查

     SELECT @CurrentError = @@Error

    IF @CurrentError != 0

        BEGIN

           GOTO ERROR_HANDLER

        END

         

     SELECT @MsgID=@@IDENTITY

     

     INSERT INTO MsgList(MsgID,UserID,SendTime)

     SELECT @MsgID,UserID,@SendTime

     FROM OpenXML(@idoc, '/ArchiveMsg/MsgList')

         WITH (

                MsgID   int,

                UserID varchar(80),

                SendTime datetime

         ) 

   -- 錯誤檢查     

     SELECT @CurrentError = @@Error


    IF @CurrentError != 0

        BEGIN

           GOTO ERROR_HANDLER

        END

     

     -- 事務結束 

     COMMIT TRANSACTION

     SET NOCOUNT OFF

         -- 從內存中移除定義的XML文檔

    EXEC sp_xml_removedocument @idoc


     RETURN 0

     

     ERROR_HANDLER:

          ROLLBACK TRANSACTION

          SET NOCOUNT OFF   

        -- 從內存中移除定義的XML文檔

          EXEC sp_xml_removedocument @idoc

          RETURN @CurrentError 





好了,存儲過程就是這樣了,我們得測試這個存儲過程,測試函數代碼如下:

首先我們得生成這個XML文檔,為了簡便起見,我們就用一個String變量來摸擬XML文檔:

         public string GetXmlString(ArchiveDetail myMsg,string[] useridList)

         {

              string xml="<?xml version=\"1.0\" encoding=\"gb2312\" ?>";

              xml+="<ArchiveMsg ";

              xml+="Title=\""+myMsg.Title+"\" ";

              xml+="UserID=\""+myMsg.UserID+"\" ";

              xml+="Author=\""+myMsg.Author+"\" ";

              xml+="SendTime=\""+myMsg.SendTime.ToString()+"\" ";

              xml+="Department=\""+myMsg.Department+"\" ";

              xml+="AttachFile=\""+myMsg.AttachFilepath+"\" ";

              xml+="ReceiveList=\""+myMsg.ReceiveList+"\" ";

              xml+="Body=\""+myMsg.Body+"\">";

              foreach(string i in useridList)

              {

                   xml+="<MsgList UserID=\""+i+"\"/>";

              }

              xml+="</ArchiveMsg>";

              return xml;

         
}

然后就是調用這個存儲過程的函數:

         public bool SendArchiveMsg(ArchiveDetail myMsg,string[] useridList)

         {

              string xml=this.GetXmlString(myMsg,useridList);

              try

              {

                   SqlParameter[] prams={                                           data.MakeInParam("@xml",SqlDbType.VarChar,8000,xml)                               

                            };

SqlConnection con = new

SqlConnection("server=127.0.0.1;uid=sa;pwd=sa;database=mydatabase");

              con.Open();


              SqlCommand cmd = new SqlCommand("upArchiveMsgInsertMsg", con);

              cmd.CommandType = CommandType.StoredProcedure;

              foreach (SqlParameter parameter in prams)

                       cmd.Parameters.Add(parameter);


              cmd.Parameters.Add(

              new SqlParameter("ReturnValue", SqlDbType.Int, 4,

              ParameterDirection.ReturnValue, false, 0, 0,

              string.Empty, DataRowVersion.Default, null));


              cmd.ExecuteNonQuery();

              con.Close();

              int retval = (int)cmd.Parameters["ReturnValue"].Value;

              if(retval==0)

                   return true;

              else

                   return false;

              }

              catch(Exception ex)

              {

                   Error.Log(ex.ToString());

                   return false;

              }

         }


在上述的代碼中,代碼量比較多,但是實際的處理過程其實比較簡單,大致如下:

定義xml文

在存儲過程中引入xml,利用sql server的open xml對之處理(具體就是幾個與xml相關的函數)

在程序中調用存儲過程

結束。

通過這樣的方式我們就可以很方便的把xml及sql server結合起來應用。

當然sql server對xml的支持不僅在此,如果有留心的可以看到在IIS中也可以配置sqlxml,相關方面的內容,在后續的文章中會逐漸介紹,在文中有不詳盡及不妥之處,還請各位網友批評指正。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大美女一区二区三区| 岛国一区二区三区| 国产精品麻豆网站| 久久丝袜美腿综合| 欧美成人高清电影在线| 精品少妇一区二区三区| 日韩一区二区中文字幕| 精品理论电影在线| 久久久久国产精品麻豆ai换脸| 日韩一级片在线观看| 日韩欧美一区在线| 国产日韩欧美激情| 国产成人啪免费观看软件| 日韩av一区二| 奇米色一区二区三区四区| 看片的网站亚洲| 国产一区二区精品久久| 91黄色免费观看| 在线播放中文一区| 久久综合九色综合97婷婷女人| 国产午夜亚洲精品羞羞网站| 国产欧美精品一区二区三区四区| 国产精品第一页第二页第三页| 亚洲激情图片一区| 视频一区中文字幕国产| 国内成人精品2018免费看| 美女视频黄久久| 成人国产亚洲欧美成人综合网| 色哟哟亚洲精品| 欧美三级视频在线观看| 久久久久久久综合日本| 一区二区三区在线视频免费观看| 视频一区二区欧美| 蜜臀久久99精品久久久久久9| 精品一区二区三区免费观看| 成人h精品动漫一区二区三区| 欧美伊人精品成人久久综合97 | 一区二区三区在线视频免费 | 67194成人在线观看| 久久久综合精品| 亚洲一级不卡视频| 国产91综合一区在线观看| 欧美亚洲高清一区| 欧美激情一区二区三区蜜桃视频| 一区二区三区**美女毛片| 麻豆一区二区三区| 在线免费不卡视频| 欧美韩国日本综合| 青青草视频一区| 色欧美片视频在线观看| 国产色产综合色产在线视频| 亚洲成a人片综合在线| 懂色av中文字幕一区二区三区 | 久久精品国产亚洲5555| 欧美伊人精品成人久久综合97| 国产校园另类小说区| 秋霞成人午夜伦在线观看| 欧美少妇一区二区| 亚洲欧美日韩成人高清在线一区| 激情都市一区二区| 日韩欧美色综合| 日韩电影在线观看网站| 欧美中文字幕一区二区三区亚洲| 国产精品视频免费看| 国产精品一区二区在线观看网站| 91精品国产综合久久香蕉的特点| 夜夜嗨av一区二区三区| 色综合一区二区| 国产精品国产成人国产三级| 国产激情一区二区三区四区| 欧美va天堂va视频va在线| 蜜桃视频在线观看一区| 日韩一区二区三区在线视频| 亚洲午夜久久久久久久久电影网| www.色综合.com| 亚洲欧美日韩成人高清在线一区| av中文字幕不卡| 国产精品久久久久久久久免费丝袜 | 蜜臀国产一区二区三区在线播放| 欧美在线观看视频一区二区三区| 亚洲图片另类小说| 99国内精品久久| 亚洲欧美国产77777| 93久久精品日日躁夜夜躁欧美| 午夜电影一区二区三区| 欧美三级在线看| 日韩av成人高清| 久久奇米777| 99精品欧美一区二区三区小说| 自拍视频在线观看一区二区| 91美女片黄在线观看91美女| 亚洲黄色小视频| 欧美性受极品xxxx喷水| 奇米影视一区二区三区| 久久亚洲免费视频| 99精品热视频| 日韩二区三区在线观看| 久久久久久久性| 一本久久综合亚洲鲁鲁五月天| 香蕉成人啪国产精品视频综合网| 日韩欧美123| 成人午夜电影网站| 婷婷丁香久久五月婷婷| 26uuu色噜噜精品一区| 成人av在线一区二区| 午夜精品久久一牛影视| 国产亚洲一区二区三区在线观看 | 樱桃视频在线观看一区| 欧美一区三区二区| 不卡视频在线观看| 午夜精品久久久久| 国产免费成人在线视频| 欧美色窝79yyyycom| 国产乱人伦精品一区二区在线观看 | 日韩视频免费观看高清完整版在线观看 | 亚洲欧洲精品天堂一级 | 国产日韩欧美麻豆| 欧美日韩激情一区二区| 国产精品一区二区你懂的| 亚洲在线观看免费| 国产欧美视频一区二区| 69精品人人人人| 色哟哟欧美精品| 国产伦精一区二区三区| 亚洲国产中文字幕在线视频综合| 国产亚洲欧美激情| 欧美一区二区三区四区在线观看| 97精品视频在线观看自产线路二| 久久精品理论片| 亚洲一二三区在线观看| 中文字幕免费不卡| 欧美成人bangbros| 欧美一区日韩一区| 欧美色图免费看| 99免费精品视频| 成人久久18免费网站麻豆| 精品中文字幕一区二区小辣椒| 亚洲成人精品影院| 一区二区三区电影在线播| 欧美激情一二三区| 久久男人中文字幕资源站| 日韩欧美在线网站| 欧美一级专区免费大片| 欧美日韩夫妻久久| 欧美色欧美亚洲另类二区| 91原创在线视频| 色婷婷久久一区二区三区麻豆| 东方欧美亚洲色图在线| 国产91精品久久久久久久网曝门| 精品一区在线看| 黄色成人免费在线| 激情综合网最新| 蜜乳av一区二区| 日韩av高清在线观看| 日本欧美一区二区在线观看| 日韩在线a电影| 蜜臀99久久精品久久久久久软件| 奇米色一区二区三区四区| 蜜桃av一区二区在线观看| 美女视频黄频大全不卡视频在线播放| 亚洲韩国一区二区三区| 偷拍与自拍一区| 久久精品国产99国产精品| 久久99精品国产麻豆婷婷| 国内精品免费在线观看| 国产精品一区免费视频| 成人av在线资源| 色88888久久久久久影院按摩 | 在线综合视频播放| 欧美一区二区二区| 久久奇米777| 亚洲人精品午夜| 婷婷综合另类小说色区| 另类小说欧美激情| 成人美女视频在线观看18| 在线观看视频一区| 日韩欧美国产精品| 国产精品久久久久三级| 一区二区三区视频在线看| 日韩主播视频在线| 丁香桃色午夜亚洲一区二区三区| 99精品一区二区| 91精品国产入口在线| 国产嫩草影院久久久久| 亚洲一区二区美女| 国产老女人精品毛片久久| 色综合天天综合网天天狠天天 | 久久99久久久久| 99精品视频在线观看| 欧美精品久久99久久在免费线 | 中文字幕中文字幕一区二区| 亚洲不卡一区二区三区| 国产精品正在播放| 91福利资源站| 国产人妖乱国产精品人妖| 午夜欧美在线一二页| 成人黄色小视频| 亚洲精品一区二区精华| 亚洲欧美日韩国产中文在线| 国产一区二区三区四区在线观看|