分享
 
 
 

将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes ) [4]

王朝mssql·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes )

小气的神

2002-5-25

Article Type: Overview

难度等级:5/9

版本:4.16

使用SQLXML Managed Classes

SQLXML提供的Managed Classes并不多,dotNET Framework提供了MS SQL 2000的Data Provider,这意味着你可以使用ADO.NET的Class来执行FOR XML子句的查询,但是你将不能用这些Class执行我们上面说的模板和服务器端的XPath命令。所以SQLXML提供的Managed Classes也是着重在这些方面的,可喜的是这些Classes和ADO.NET中的对象能很好的配合工作,比如Dataset.

从下面这幅图中我们可以看到SQLXML Managed Classes的对象模型:

通过这些Managed Classes和原来dotNET Framework的Classes,我们可以通过更多的方式存取数据库。而且我们看到信息流动的形式可以是多种的,出于对性能的考虑,开发人员将根据具体的情况选择不同的方式(详见SQLXML3.0文档:Architecture of Client-Side and Server-Side XML Formatting)

不过从某种程度上它可能改变我们原来的架构的体系结构,SQLXML 3.0带的一些例子婉转地说明了这一点,而且也想证明对于有的应用来说,SQLXML可以很好的处理一些情况,并且发挥XML的强大优势。

DAL的概念是如此的流行,而我也从Project Track System的代码中抽出DB存取的一些代码,组成一个DAL组件,然后我试图对一个简单的假设测试一下,那就是先定义一个模板(XML view),然后用DAL执行这个模板,从中取出数据,最后用一个简单的XSLT将它显示出来。

模板就用我们上述中的任意一个显示Employees表的模板,而后我们把执行模板的结果显示在一个Grid中,并且将同样的结果通过XSLT做一个HTML Table的显示。

这张图的结果使用两种不同的方式,ASP.NET Grid中的数据是这样显示出来的,首先我们加一个新的Item:一个Dataset,然后我们Copy上面用VS.NET产生的那个Schemas文件的内容,可以说两者是一样的,之后我们根据这个Dataset就可以生产一个C#的类,接着我们拖动这个Dataset到WebForm的设计视图,就会一个Wizard出现,选中这个Dataset。然后我们再拖入一个ASP.NET的DataGrid控件,设置它的DataSource是这个Dataset。然后在Page_Load加入下面的代码:

private void Page_Load(object sender, System.EventArgs e)

{

// Put user code to initialize the page here

employees1.ReadXml( new XmlTextReader( "http://localhost/northwind/templates/emplyeesvs.xml" ) );

dgEmployees.DataBind() ;

}

这样我们完成了DataGrid中的显示(显然这种方法没有使用新的Class,只用了dotNET Framework)。至于在Grid下面的HTML Table显示是通过执行DAL和一个XSLT获得的。大致的代码如下:

public void WriteTable()

{

string RetXMLString ;

XSLTHelp xslHelp = new XSLTHelp() ;

SqlXmlDal = new SQLXML() ;

RetXMLString = SqlXmlDal.ExecuteTemplteFile( "selectemployees.xml" ) ;

RetXSLString = xslHelp.ApplyXSL( RetXMLString , Server.MapPath("Employees.xslt" )) ;

Response.Write ( RetXSLString ) ;

}

最后一段代码是使用XPath访问映射文件的,我经常使用类似下面这段代码来测试自己的映射文件和XPath表达式。

SqlXmlCmdObj = new SqlXmlCommand( SQLDBConnStr ) ;

SqlXmlCmdObj.CommandType = SqlXmlCommandType.XPath ;

SqlXmlCmdObj.CommandText = "Employees" ;

SqlXmlCmdObj.SchemaPath = SchemasDir + "EmployeesVS.xsd";

ResultStream = SqlXmlCmdObj.ExecuteStream() ;

StreamReader SR = new StreamReader( ResultStream ) ;

ResultString = SR.ReadToEnd() ;

Console.WriteLine(ResultString);

好了,我想这个简单的例子之后也结束我们的旅途,至此我们大致的考察了一些SQLXML3.0 中的一些新特性,虽然只开了一个头,我们已经发现里面藏着很多很多的内容和概念(全部详细讲完可能可以够写一本书了haha),当然我们只考察了非常有趣而且容易上手的几个功能,其中有许多我们还没有真正深入涉及到,但在描述的过程中我已经开始不停地假设,假定你以前有使用过SQL 2000 XML功能,假定你对XDR、XPath、XSLT有一个大致的认识和印象。最后我不得不提高了这篇文章的难度等级,我想这是我的问题,事隔一二个月之后,几乎是边回忆边写边调试这些例子和程序,所以一定会疏漏掉一些,使得文章更加难读。不过我相信SQLXML中有足够的特色可以让你对它印象深刻,尽管比起我喜欢的Hailstorm模型,SQXML还会逊色和欠缺一些,但从Microsoft对SQL Server的着力和期望来看,SQL Server 2000和它的下一个版本都会承担和展现更多的功能和特色,无论XML还是数据存储本身,SQL Server都将不是一个简单的产品,而会象一个开发平台的方向迈进,借助XML,你会发现它能够更加紧密的和Microsoft的其它产品融合在一起,并且轻易地体现其重要的核心角色。

(之后的文章,我们可能会考察有关SQLXML更细节的一些特性亦或是最新的Microsoft SQL Server Notification Services的一些内容,我想它们都将是十分具体的SQLXML的应用和深入)

相关文件下载: SQLXML.zip ( 51K )

特别说明:

本文原创,CSDN署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。

如果有问题或建议,请发电子邮件给new2001@msn.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有