用SQL 2000和XML簡化層次式資料

2021-04-17 04:42:22 字數 1829 閱讀 7499

sql的擴充套件語言來訪問分級資料的途徑」。

因此,我這樣回答客戶:「是的。在以前的乙個專案中,客戶建議我們使用msdatashapes來訪問儲存在microsoft sql 2000中後端資料。但是由於我們構建的是乙個web解決方案,因此利用sql對xml的支援顯得更有意義,它天生就是層次式的(hierarchical)。」客戶由此認定我是一名資深的開發者,很有趣。不過我想如果下次再碰到這樣的情況,我只需簡單的回答「是的」而不要破壞潛在支票簽發者的技術決定。

然而,這次經歷並不能阻止我對支援的狂熱。除了在select語句的後面加上乙個for xml auto,elements外,我不必作查詢之外的事情,。(當然,在查詢中還需要進行深思熟慮。)這對通過乙個或者多個join進行訪問的關係型資料庫尤其有用。

例如,假設我們有乙個sales資料庫,它包含了三個**:orders、products和customers。orders**包含了orderid(id)、produnctid、customerid和quantity欄位。products**包含了produnctid(id)、productname和unitprice這三個字段。customers**包含了customerid(id)、customername和customerstreet1欄位,可能還有諸如discount之類的字段。order**分別通過productid和customerid欄位與products**和customers**關聯。

非常簡單,現在,假設我需要檢索某個客戶的全部消費資訊,假設該客戶的customerid是99999。那麼查詢如下所示:

select customers.customerid, customers.customername, orders.orderid,

(orders.quantity * products.unitprice) as totalsales, products.productid,

products.productname from customers inner join orders on customers.customerid

= orders.customerid inner join products on orders.productid =

products.productid where customers.customerid = 99999 for xml auto, elements

這次也很簡單。為了減少網路流量,sql會減少冗餘資料來確保你所收到的資料盡可能少,因此你需要注意如何組織你的查詢。如果你的查詢沒錯,那麼你將收到如下的xml字串:

99999

abc company

112345.67

11111

product x

你會發現上述資料中並沒有按欄位重複的給出customerid等資料。在上面的例子中,你可以看出資料的層次。

如果你想知道它在你的工作中能夠發揮什麼作用的話,你只需要想象一下如何在ado中找到這個資料(不要離開可能的範圍,但也不要過於簡單)。現在,考慮一下如何通過dom來找到這個資料。子節點有父節點,反之亦然,這樣所有的資料都是互相聯絡的。

ie這種通過datasrc和datafld屬性來繫結資料到某些html標籤的能力使得sql 2000最適合運用於企業內部網際網路應用程式(在ie 5.0以上版本中)。把這個xml放置到一對根標籤(root tag)之間,然後再把它們放到一對xml標籤之間,這樣你就有了乙個簡單的資料解決方案。ie的描畫引擎(rendering engine)會根據資料來源、甚至巢狀**來自動構建**。或者,你可以通過xsl轉換來傳送這個資料,這樣你就有了乙個簡單的web解決方案。

本文作者philip perkins是ajilon諮詢公司的簽約人,他知識非常廣博——從機器控制和客戶端伺服器一直到企業內部網應用程式。

用SQL 2000傳輸資料

microsoft sql server 2000提供了資料傳輸服務 dts 工具,這讓完全不同的系統之間傳輸資料變得更加高效 方便。sql server enterprise manager的客戶介面也提供這個工具。現在我們來更加仔細地看看如何訪問和使用dts。在我的例子中間,我會把資料從sql ...

怎樣用SQL 2000 生成XML

以前在介紹sql2k的時候已經提到了sql2k對xml的支援,使用for xml語句就可以很容易的把執行的結果轉化為乙個xml,這樣可以在很大程度上提高系統執行效率和開發速度,詳細的內容請參見books online。但是在使用ado required ado 2.6 訪問返回的xml的方式和原來的...

用VB進行SQL2000的資料備份和恢復

一 資料備份 備份有兩中形式完全備份和差異備份 完全備份 是對資料庫進行完整備份,週期比較長,如1周等 差異備份 是對更新備份的資料進行備份,週期比較短,如1小時 命令介紹 backup database 資料庫名 to disk 儲存路徑和名稱 with 其他屬性 注釋 serverip sqls...