SQL Server 2000 XML Enhancements
Download
Report
Transcript SQL Server 2000 XML Enhancements
SQLXML 的創新與未來前景
恆逸資訊
資深講師
汪志君
Microsoft 願景
Empower people
through great software,
any time, any place,
and on any device
第一代 SQLXML
FOR XML (Raw, Auto, Explicit)
Rowsets 以 XML 文件格式傳回
透過 HTTP 存取 SQL Server
Templates
XML Views with Mapping Schema
將關聯式資料當成 XML 檔案一般地處理 (Ex:
XPath)
SQLXML ─發展現況
SQLXML Web Release 1 (WR1)
Updategrams
Bulk Load
SQLXML 2.0
支援 XSD (W3C標準)!
SQLXML OLEDB provider
效能提昇
SQLXML 最新發展
ADO.NET 以 XML 為底層
SQL Server 2000 Web Services Toolkit
下載:http://www.microsoft.com/sql
New!
Managed Classes
(須搭配 Microsoft .NET Framework)
New!
支援 Web Service
議程大綱
SQL XML 在 ADO.NET 之運用
SQLXML Managed Class
SQLXML3.0─支援Web Service
議程大綱
SQL XML 在 ADO.NET 之運用
SQLXML3.0─支援Web Service
SQLXML Managed Class
新一代的 ADO .NET
離線資料庫 (Disconnected Data Sets)
以XML為架構基礎
解除 SQL Server bottle-neck 問題
公開的資料交換標準
跨平台、跨作業系統、跨 Firewall
更豐富的 Data Model
Model 資料庫而不只是 Recordset
Relation, Constrain, PK, FK, View …
XML-Based Data Model
ADO.NET 存取模型
DataSet
SQL Server .NET
OLE DB .NET
SQL Server 7.0
OLE DB sources
ADO.NET 物件架構
DataReader
Command
資料內容
SQL
資料庫 Connection
DataAdapter
DataView
DataSet
List-Bound
Control
DataSet
依關聯性檢視資料
Tables, Columns, Rows,
Constraints, Relations
離線模式
DataSet
Tables
Table
Columns
Column
Constraints
Constraint
Rows
Row
Relations
Relation
DataAdapter
DataSet
Fill() Update()
資料來源取出Table並將變更回存
使用兩種方法
使用者 新增/修改/刪除 資料
Fill(…)
Update(…)
SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
Mappings
Mappings
Mappings
DataAdapter
Data
store
可使用 Stored Procedures 與 CommandBuilder
物件
允許將不同資料來源的資料匯入至單一
DataSet
ADO.NET 與 XML
Controls,
Designers,
Code-gen…
XSL/T, X-Path
…
DataSet
同步
DataAdapter
DataReader
Command
Connection
Managed Provider
XmlDataDocument
XmlReader
XmlText- XmlNodeReader
Reader
關聯式資料 XML HTML
1. 將 SQL Server 資料庫的兩個 Tables 取出
至 DataSet
2. 建立關聯性
3. 設定巢狀屬性,使 XML 資料有階層架構
4. XmlDataDocument
5. 使用 XmlTransform 物件轉換成 HTML 格
式
使用 XmlTextReader
將 XML 資料寫入 SQL
ASP.NET XML Server Control
ASP.NET 新提供 <asp:xml runat=server>
server control
可以展現 XML 資料
可以直接套用 XSL/T 轉換 XML 資料
可以從XML檔案或資料庫做資料繫結
透過XSL轉換資料
透過DataSet取得XML Schema和XML Data
<ASP:XML> File Sample
<html>
<body>
<asp:xml id="MyXml1"
DocumentSource=“employees.xml"
TransformSource=“employees.xsl"
runat=server />
</body>
</html>
<ASP:XML> File Demo
SQL + ADO.NET +
<ASP:XML>
<script language="VB" runat=server>
Sub Page_Load(Sender as Object, E as EventArgs)
Dim connection as New SqlConnection(connectionString)
Dim cmd as New SqlDataAdapter(“select ProductName
from products”, connection)
Dim ds As New DataSet()
cmd.Fill (ds, "dataset")
Dim XDoc as XmlDocument = New XmlDataDocument(ds)
MyXml1.Document = XDoc
End Sub
</script>
<asp:xml id="MyXml1" runat=server/>
SQL , ADO.NET, <ASP:XML>
ADO.NET 與 SQLXML
// 建立並開啟 SqlConnection
SqlConnection cn = new
SqlConnection("server=localhost;uid=sa");
cn.Open();
// 建立並執行 SqlCommand
SqlCommand cmd = new SqlCommand
("SELECT ProductName FROM Products FOR XML AUTO,
ELEMENTS", cn);
XmlReader xr = cmd.ExecuteXmlReader();
//直接讀取或載入至 DataSet
.NET XML Menu
議程大綱
SQL XML 在 ADO.NET 之運用
SQLXML Managed Class
SQLXML3.0─支援Web Service
SQLXML Managed Classes
Dataset
Fill
Update
SqlXmlAdapter
SqlXmlCommand
XPath XQuery Template
XML
XmlReader
XML
SqlCommand
FOR XML
X
M
L
V
I
E
W
Database
SqlXmlCommand 類別
SqlXmlCommand cmd = new SqlXmlCommand(ConnStr);
cmd.CommandType = SqlXmlCommandType.XPath
cmd.CommandText = “/Customer[@CustID=‘ALFKI’]”;
cmd.SchemaPath = “nwind.xdr”;
cmd.RootTag = “ROOT”;
XmlReader r = cmd.ExecuteXmlReader();
// 或者
FileStream f = new FileStream(…);
cmd.ExecuteToStream(f);
Using Templates from .NET
SqlXmlCommand cmd = new SqlXmlCommand(ConnStr);
cmd.CommandType = SqlXmlCommandType.Template
cmd.CommandText =“路徑\範本檔案名稱”;
FileStream f = new FileStream(“檔名”,FileMode.Create);
cmd.ExecuteToStream(f);
SqlXmlParameter 類別
SqlXmlCommand cmd = new SqlXmlCommand(..);
cmd.CommandType = SqlXmlCommandType.XPath;
cmd.CommandText = "/Customer[@ID=$CustomerID]";
cmd.SchemaPath = @"c:\Demo\nwind.xdr";
cmd.RootTag = "root";
SqlXmlParameter p = cmd.CreateParameter();
p.Name = "@CustomerID";
p.Value = TextBox1.Text;
SqlXmlAdapter 類別
Fill (DataSet ds)
將由 SQL Server 產生的 XML 資料載入至
DataSet 物件內
Update (DataSet ds)
使用 XML DiffGram 將 DataSet 物件所做的修
改動作更新至 SQL Server
SQLXML Managed Classes
議程大綱
SQL XML 在 ADO.NET 之運用
SQLXML Managed Class
SQLXML3.0─支援Web Service
什麼是 Web Service?
Microsoft .NET 願景的核心技術
程式開發的主流架構
提供其他應用程式資料和服務的
“Libraries”
使用標準的 Web 通訊協定如 HTTP,XML,
UDDI (Universal Description, Discovery
and Integration),SOAP 以及 WSDL
應用程式跨平台合作
Web Service 案例
租賃公司s
UDDI
註冊
航空公司s
防火牆
防火牆
防火牆
Internet
Web Service 使用者
旅館s
Web Services (實際運作流程)
尋找提供服務的 Server
http://www.uddi.org
UDDI
連結到 DISCO 或 WSDL 文件
Web
Service
Consumer
我們要如何溝通? (WSDL)
http://yourservice.com/?WSDL
以 XML 描述提供的服務
Web
Service
讓我們開始溝通吧 (SOAP)
http://yourservice.com/svc1
XML/SOAP 表身
Design-Time or Runtime
Runtime
SQLXML 與 Web Services
WSDL file describing each template and
stored proc exposed
Tool to choose which templates and
stored procedures to expose
IIS/ISAPI
WSDL
Client
SOAP
Message
SP
Message
Template
SQL
Server
設定 SQLXML 3.0 對 Web
Service 的支援
建立 soap 型態的 Virtual Name
設定 soap 虛擬名稱
讓預存程序、使用者自訂函數或範本可以透
過 Web Service 存取
產生 ssc 與 wsdl 檔案
http://server/Vdir/Vname?wsdl
SQLXML 3.0
建立 Web Service
Client 端存取 Web Service
加入 Web 參考
產生 Proxy Class 的物件實體
Server.WSName proxy =
new Server.WSName();
透過 DataSet 或 XmlElement 接收結果
SQLXML 3.0
Web Service
SQL XML 快速回顧
各種平台與
裝置的
Web Service
Cleint
SQLXML3.0 Web Service
瀏覽器
IIS
應用程式
I
S
A
P
I
SQL
Server
2000
SQLXML
(XML View)
透過 ADO 或 ADO.NET 存取
Client
Middle Tier
DB
DB
SQL Server
結論
SQL Server 2000 = 強大的關聯式資料
庫,提供大量的資料儲存
XML = 資料交換最重要的描述方式
ADO.NET = XML 與 RDB 溝通的橋樑
Web Service 提供不同應用程式資料與
服務
跨平台、跨作業系統
未來程式開發的主流
資源與服務
SQL Server 2000
http://www.microsoft.com/SQL
XML Developer Center
SOAP & Web Services Developer Center
http://msdn.microsoft.com/xml
http://www.w3.org/XML/
http://msdn.microsoft.com/soap
http://msdn.microsoft.com/webservices
SQL Server 中文電子雜誌
http://www.sqlserver.com.tw