亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

用SQL 2000創建用戶化XML流

2024-07-21 02:31:12
字體:
來源:轉載
供稿:網友

你可能想在程序當中使用xml,但是僅僅用一個簡單的查詢是不能從Microsoft SQL Server 2000中獲取其信息的。
 
讓我們假設你想將一個HTML 表格連接到一個XML數據島,但是你十分確定要將若干表格套入母表中十分復雜。母表中的每一個表格一定是XML數據結構中父節點下的一組節點。電話號碼目錄就是一個很好的例子。

<TABLE dataSrc="#xmlPhoneData">
<TR>
    <TD>
        <SPAN dataFld="fname"></SPAN>&nbsp;
        <SPAN dataFld="lname"></SPAN>
    </TD>
</TR>
<TR>
    <TD>
        <TABLE dataSrc="#xmlPhoneData" dataFld="phone">
            <TR>
                <TD><SPAN dataFld="phone_type"></SPAN>:</TD>
                <TD><SPAN dataFld="phone_no"></SPAN></TD>
            </TR>
        </TABLE>
    </TD>
</TR>
<TR>
    <TD>
        <TABLE dataSrc="#xmlPhoneData" dataFld="other_info">
            <TR>
                <TD><SPAN dataFld="info_type"></SPAN>:</TD>
                <TD><SPAN dataFld="info_data">/SPAN></TD>
            </TR>
        </TABLE>
    </TD>
</TR>
</TABLE>

 

TABLE代表一系列信息,包括目錄中某個人的名字、所有的電話號碼和那個人的其他信息(譬如說,地址等)。

 

這個XML的模型如下:

<root>
      <data>
          <lname/>
          <fname/>
          <phone>
              <phone_type/>
              <phone_no/>
          </phone>
          <other_info>
              <info_type/>
              <info_data/>
          </other_info>
      </data>
  </root>

 

盡管創建這個XML模型不是不可能的,我們仍然在本文中使用這個簡單的例子。

首先,我們將提供一些背景知識使其更全面。數據來源于三個方面:包含員工的名(fname)和姓(lname)的職工表;包含員工電話類型(phone_type)和電話號碼(phone_no)的電話表;包含員工其他信息(如地址等)的其他信息表(other_info)。

 

如果你想將信息從這些表中抓取到一個記錄集中,SQL查詢可以如下:

SELECT employee.lname, employee.fname, phone.phone_type, phone.phone_no,
other_info.info_type, other_info.info_data FROM employee LEFT JOIN phone ON
 phone.employee_id = employee.employee_id LEFT JOIN other_info ON
 other_info.employee_id = employee.employee_id

 

當你需要SQL 2000中有XML的時候,你通??梢栽诓樵冏址哪┪草斎胍粋€FOR XML AUTO, ELEMENTS語句,你就可以得到想要的XML字符串。但是,多個節點會有一點小問題。單個節點很容易,但當你引用多個表格時,你可能不會花整天時間去嘗試獲得想要的XML輸出。

 

另一個方法就是關閉行計算和數據輸出。你可以通過將一個指針移入母表數據,用一個指令來操作記錄,然后從帶有FOR XML AUTO、ELEMENTS語句的其他表格選擇相關記錄以分流XML輸出來實現。

 

這個功能最好保存到一個存儲程序,因為指針比較慢,而一個存儲程序被事先編輯好。下面就是完成這項任務的存儲程序(Transact SQL)。

DECLARE @employee_id int
DECLARE @fname varchar(50)
DECLARE @lname varchar(50)
DECLARE phone_cursor CURSOR FOR SELECT employee_id, fname, lname FROM employees
 ORDER BY lname, fname

SET NOCOUNT ON

OPEN phone_cursor

FETCH NEXT FROM phone_cursor INTO @employee_id, @fname, @lname

WHILE @@FETCH_STATUS = 0
BEGIN

    SELECT '<data><fname>' + @fname + '</fname><lname>' + @lname +
 '</lname>'

    SELECT phone_type, phone_no FROM phone WHERE employee_id =
 @employee_id FOR XML AUTO, ELEMENTS
    SELECT info_type, info_data FROM other_info WHERE employee_id =
 @employee_id FOR XML AUTO, ELEMENTS

    SELECT '</data>'

    FETCH NEXT FROM phone_cursor INTO @employee_id, @fname, @lname

END

CLOSE phone_cursor
DEALLOCATE phone_cursor

SET NOCOUNT OFF
GO

 

這幾句SQL創建了一個用以存儲員工數據和重復執行的指針。為了解除每一個SELECT語句后的行計算輸出功能,NOCOUNT被設置為ON。當指針中的每條記錄在被操作的時候,構成了一個包含著XML輸出的名和姓節點字符串。電話信息和其他信息也都創建了XML。

 

然后,父節點關閉。在成功地完成了指針操作以后,關閉指針并對其再分配。這就得到了一個符合目標XML模型的XML字符串。

 

為了有效的使用這個XML輸出字符串,輸出必須存儲在一個ADO流對象中。利用流對象中的ReadText方法可以訪問數據:

<XML id="xmlPhoneData" name="xmlPhoneData">
<%
Dim adoConn, adoCmd
Dim adoStream
Set adoConn = Server.CreateObject("ADODB.Connection")
Set adoCmd = Server.CreateObject("ADODB.Command")
adoConn.ConnectionString = "Some Connection String To MS SQL 2K"
adoConn.Open
Set adoCmd.ActiveConnection = adoConn
Set adoStream = Server.CreateObject("ADODB.Stream")
adoCmd.CommandType = 4 'adCmdStoredPRoc
adoCmd.CommandText = "get_test_phone"
adoStream.Open
adoCmd.Properties("Output Stream") = adoStream
adoCmd.Execute ,,1024 'adExecuteStream

Response.Write adoStream.ReadText(-1)

adoStream.Close
Set adoStream = Nothing
adoConn.Close
Set adoCmd = Nothing
Set adoConn = Nothing
%>
</XML>

以上代碼創建了一個ADO到SQL 2000的連接,執行了一個存儲程序。結果被儲存在ADO流對象(adoStream)中。其數據寫入Response緩沖器,流對象被關閉,然后是一些“清倉”操作。

這個范例提供了一個創建用戶化XML方案的一般方法。通過將HTML表格連接到XML數據島,你可以創造一些針對性的解決方法。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品在线影院| 中文字幕免费精品一区| 国产一区二区免费| 久久久久在线观看| 精品国产91久久久久久老师| 精品福利视频导航| 国语自产在线不卡| 久久久久久香蕉网| 亚洲国模精品私拍| 久久精品视频中文字幕| 色爱精品视频一区| 米奇精品一区二区三区在线观看| 成人激情视频在线观看| 国产在线视频91| 亚洲一区二区自拍| 亚洲欧美999| 亚洲国产精品高清久久久| 欧美国产高跟鞋裸体秀xxxhd| 日韩久久午夜影院| 日韩在线视频导航| 岛国av一区二区在线在线观看| 日韩成人在线网站| 欧美亚洲第一区| 91精品国产综合久久久久久蜜臀| 国产成人精品在线观看| 精品国产一区二区三区在线观看| www.美女亚洲精品| 久久久久久久久久久网站| 亚洲欧美日韩精品久久| 久久精品成人动漫| 高清日韩电视剧大全免费播放在线观看| 亚洲欧美中文日韩在线v日本| 亚洲春色另类小说| 国产欧美韩国高清| 国产精品久久中文| 国产乱人伦真实精品视频| 国产精品91久久久久久| 超碰日本道色综合久久综合| 久热在线中文字幕色999舞| 国产一区二区丝袜高跟鞋图片| 欧美亚洲国产日韩2020| 日韩一二三在线视频播| 奇米影视亚洲狠狠色| 欧美日韩国产麻豆| 国产精品福利网| 在线播放亚洲激情| 日韩在线视频一区| 国产精品高清在线| 日韩经典一区二区三区| 日韩免费在线看| 不用播放器成人网| 欧美日韩亚洲激情| 欧美性xxxxx极品| 欧美性理论片在线观看片免费| 欧美亚洲午夜视频在线观看| 国产91精品久| 久久成人亚洲精品| 北条麻妃久久精品| 国产精品免费一区豆花| 欧美国产日韩一区| 色偷偷噜噜噜亚洲男人的天堂| 欧美怡春院一区二区三区| 97香蕉超级碰碰久久免费的优势| 国产精品久久激情| www.日韩视频| 亚洲精品美女久久久久| 国语自产精品视频在线看一大j8| 亚洲美女又黄又爽在线观看| 亚洲丝袜在线视频| 亚洲欧美日韩精品久久奇米色影视| 成年无码av片在线| 精品激情国产视频| 日韩亚洲欧美中文在线| 亚洲国产精品女人久久久| 狠狠爱在线视频一区| 亚洲wwwav| 精品久久久久久久久久国产| 久久人人爽人人爽人人片av高请| 色婷婷久久一区二区| 成人国产在线视频| 亚洲 日韩 国产第一| 国产精品嫩草视频| 91精品久久久久久久久久久| 亚洲人高潮女人毛茸茸| 国产精品美女在线观看| 国产精品国模在线| 久久精品国产亚洲精品2020| 欧美激情亚洲综合一区| 久久精品免费播放| 国产免费一区二区三区在线能观看| 中文字幕在线视频日韩| 国产欧美精品日韩| 亚洲性日韩精品一区二区| 中文字幕亚洲综合久久| 亚洲欧美制服第一页| 日韩在线视频免费观看高清中文| 日韩在线观看你懂的| 国产精品久久久久久久久久三级| 精品久久香蕉国产线看观看亚洲| 日本中文字幕不卡免费| 色婷婷综合久久久久| 日韩毛片在线观看| yw.139尤物在线精品视频| 国产偷亚洲偷欧美偷精品| 国产精品视频专区| 色偷偷91综合久久噜噜| 高清欧美性猛交xxxx| 97在线观看视频国产| 亚洲人午夜色婷婷| 久久在精品线影院精品国产| 国产精品美女在线观看| 国产一区二区三区高清在线观看| 九九热精品视频国产| 亚洲综合成人婷婷小说| 欧洲亚洲妇女av| 亚洲色无码播放| 欧美日韩国产在线| 欧美大尺度在线观看| 久久影视电视剧免费网站清宫辞电视| 日韩av在线影院| 国产精品久久久久久av| 琪琪第一精品导航| 亚洲片在线观看| 精品网站999www| 5278欧美一区二区三区| 欧美另类69精品久久久久9999| 国产日韩在线免费| 久久精品视频一| 久久精品亚洲94久久精品| 久久精品国产视频| 亚洲国产成人在线视频| 国产精品亚洲аv天堂网| 亚洲一区二区三区乱码aⅴ| 国产成人av在线播放| 色综合天天狠天天透天天伊人| 亚洲情综合五月天| 欧美午夜精品久久久久久浪潮| 久久综合久久八八| 中文字幕在线观看日韩| 精品性高朝久久久久久久| 成人97在线观看视频| 日韩欧美aaa| 国产视频精品免费播放| 91精品综合久久久久久五月天| 亚洲精品日韩激情在线电影| 美日韩精品免费观看视频| 中文在线不卡视频| 久久影院在线观看| 97视频免费在线看| 26uuu亚洲国产精品| 久久视频国产精品免费视频在线| 国产va免费精品高清在线| 国产在线精品一区免费香蕉| 91探花福利精品国产自产在线| 欧美精品久久久久久久免费观看| 美女扒开尿口让男人操亚洲视频网站| 欧美日韩国产成人在线观看| 国产精品羞羞答答| 日韩精品中文字幕有码专区| 国产成人精品一区二区在线| 2019最新中文字幕| 亚洲 日韩 国产第一| 欧美一区二区三区免费视| 精品国产区一区二区三区在线观看|