SQLXML 3.0的安装将Microsoft.Data.SqlXml集合装到你的机子上。给项目添加对该集合的一个引用,并用以下代码引入名字空间:using Microsoft.Data.SqlXml;
以下代码连接到数据库,并用SQLXML类来执行SELECT语句:public string ExecuteSqlXmlSelect(
string CustomerID,
string ConnectionString,
bool ClientSide)
{
SqlXmlCommand cmd = new
SqlXmlCommand(ConnectionString);
cmd.RootTag = "Employees";
cmd.ClientSideXml = ClientSide;
cmd.CommandText = "SELECT * FROM
Customers WHERE CustomerID = '" +
CustomerID + "' FOR XML RAW";
XmlReader xr =
cmd.ExecuteXmlReader();
XmlDocument xd = new XmlDocument();
xd.Load(xr);
return xd.OuterXml;
}
该代码所做的第一件事就是通过将连接字符串传递到构造器来创建必要的SqlXmlCommand对象。由FOR XML创建的XML通常是一个XML片段,并不是格式规范的文件。为了使XML格式规范,你必须用RootTag属性在Command对象上设置一个根标签,在本例中设置成“employees”。
SQLXML功能包的以前的版本在将XML返回给客户端前在数据库服务器上构造XML。这会造成可扩展性方面的问题,因为创建的XML没有分布给客户端,所以产生的XML流比默认情况下SQL Server返回的本地二进位数据流要大很多。3.0版本允许SQLXML将数据流作为二进位数据返回给客户端,然后在客户端上将数据转换成XML。
将数据转换成XML
将ClientSideXml属性设置成True来实现这一步。你仍然用带有FOR XML子句的SELECT语句,但是当你将ClientSideXml设置为True时,在将语句传送到SQL Server前,托管类将FOR XML子句从SQL语句中去掉了。数据库不再看到FOR XML子句,可以更有效地将数据流返回给客户端。然后,SQL托管类在客户端将数据流转换成XML。
通过调用ExecuteXmlReader方法来执行SELECT语句,该方法返回一个XmlReader对象。然后,你将XmlReader对象载入一个XmlDocument,并将产生的OuterXml返回给调用者。
最后一个数据存取API是运用ADO 2.6和Visual Basic 6.0。通过打开一个新的VB6 ActiveX DLL项目来创建这个项目。重新命名Class1为ADO26,命名项目为DBXMLVS6。然后,给项目添加ActiveX Data Objects 2.6引用。一旦完成这一步,就给你的类添加ExecuteSelect方法(见列表3)。
同所有其它例子一样,你先要创建并打开你的数据库连接。然后,创建新的Command对象,并给Connection对象设置其ActiveConnection属性。SELECT语句同ADO.NET例子中用的SELECT语句一样。
……