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

原创 2002年07月24日 08:51:00

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

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

      

 

通过这些Managed Classes和原来dotNET FrameworkClasses,我们可以通过更多的方式存取数据库。而且我们看到信息流动的形式可以是多种的,出于对性能的考虑,开发人员将根据具体的情况选择不同的方式(详见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#的类,接着我们拖动这个DatasetWebForm的设计视图,就会一个Wizard出现,选中这个Dataset。然后我们再拖入一个ASP.NETDataGrid控件,设置它的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功能,假定你对XDRXPathXSLT有一个大致的认识和印象。最后我不得不提高了这篇文章的难度等级,我想这是我的问题,事隔一二个月之后,几乎是边回忆边写边调试这些例子和程序,所以一定会疏漏掉一些,使得文章更加难读。不过我相信SQLXML中有足够的特色可以让你对它印象深刻,尽管比起我喜欢的Hailstorm模型,SQXML还会逊色和欠缺一些,但从MicrosoftSQL Server的着力和期望来看,SQL Server 2000和它的下一个版本都会承担和展现更多的功能和特色,无论XML还是数据存储本身,SQL Server都将不是一个简单的产品,而会象一个开发平台的方向迈进,借助XML,你会发现它能够更加紧密的和Microsoft的其它产品融合在一起,并且轻易地体现其重要的核心角色。

 

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

 

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

 

 

 


特别说明:

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

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

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

将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes )   小气的神2002-5-25 Article Type: Overview  难...
  • ccBoy
  • ccBoy
  • 2002年07月24日 08:53
  • 1409

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

将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes )   小气的神2002-5-25 Article Type: Overview  难...
  • ccBoy
  • ccBoy
  • 2002年07月24日 08:58
  • 1686

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

将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes )   小气的神2002-5-25 Article Type: Overview  难...
  • ccBoy
  • ccBoy
  • 2002年07月24日 08:57
  • 1297

使用 spring web 3.0 配置web.xml

在servlet2.4以及之前版本,web容器不支持Listener这种方式,因此只能以Filter的方式配置spring。 在2.5之后版本,按照以下的方式配置: ...
  • waysoflife
  • waysoflife
  • 2014年03月11日 13:56
  • 3433

通过xml形式请求webService

wsdl地址:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl //soap请求体 POST /WebServices...
  • qq_33933408
  • qq_33933408
  • 2016年11月13日 15:50
  • 1480

sevlet 3.0 web项目搭建及web.xml讲解

Servlet3.0是Java EE6规范的一部分,Servlet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程。 二、开...
  • tantexian
  • tantexian
  • 2015年12月27日 22:06
  • 23011

XML Webservice实现原理及相关知识

好多书籍只介绍创建XML Webservice,并没有详细介绍XML WebService的工作原理以及各部分(例如IIS Asp.net)在XML WebService中所起的作用.学习后整理了一下...
  • NETZHOU
  • NETZHOU
  • 2007年06月27日 13:25
  • 3676

Servlet3 ServletContainerInitializer与Spring Web

Servlet3中增加了一个ServletContainerInitializer类。 其意义如下: ServletContainerInitializers (SCIs) are registe...
  • chen517611641
  • chen517611641
  • 2017年06月06日 14:04
  • 587

创建maven项目后修改jre为1.8,web.xml版本为3.0

在pom.xml文件中标签中加入下面的代码 org.apache.maven.plugins...
  • QUITE_CGY
  • QUITE_CGY
  • 2017年07月03日 19:38
  • 439

XML Web Services in the Organization

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpUse this ...
  • topmvp
  • topmvp
  • 2008年10月26日 19:31
  • 389
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将SQLXML 3.0用起来( Web Services, XML Views, Managed Classes ) [4]
举报原因:
原因补充:

(最多只允许输入30个字)