JET和SQL Server是否支持分层行集?

时间:2010-08-22 15:49:36

标签: sql sql-server winapi oledb jet

OLE DB文档使用SQL示例记录hierarchial rowset feature,但不指示数据库提供程序支持它。 JET和SQL Server是否支持此功能?他们是使用与文档中相同的语法,还是他们自己的扩展语法?

2 个答案:

答案 0 :(得分:2)

是的,它受到支持。我过去曾经用过它。使用MDAC附带的Data Shaping Service(在名为Msadds.dll的文件中)可以使用此功能。 OLE DB提供程序名为MSDataShape,您可以使用SHAPE command生成分层结果。连接字符串语法类似于以下内容:

射流:

Provider=MSDataShape;Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=PathToMyDatabase.mdb; 

SQL Server:

Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=ServerNameOrAddress;Initial Catalog=DatabaseName;User ID=;Password=

值得注意的一些事情:

  • SHAPE语法可以得到 作为你的笨拙(和尴尬) 查询变得更复杂,所以请保持 记住这一点。

  • 如果您使用的是.NET,则DataSetDataRelation类可以实现相同的功能。

  • 更重要的是,文档明确指出:

  

此功能将在a中删除   未来版本的Windows。避免使用   这项功能在新的开发工作中,   并计划修改那些应用程序   目前使用此功能。代替,   应用程序应使用XML。

答案 1 :(得分:0)

这不是您问题的直接答案,因此如果您必须使用分层行集,则忽略它。 我记得大约9年前读过这个功能,但从那时起就没有看过它。我认为这是错误的方式。另一方面,我确实使用了常见的表表达式(特别是递归表达式)并发现它们具有很大的价值(http://msdn.microsoft.com/en-us/library/ms186243.aspx)。 我认为分层行集应该做的是对象关系映射,并且那些行集无论如何都不能成为好的ORM(NHibernate要好得多)。