OLE DB文档使用SQL示例记录hierarchial rowset feature,但不指示数据库提供程序支持它。 JET和SQL Server是否支持此功能?他们是使用与文档中相同的语法,还是他们自己的扩展语法?
答案 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,则DataSet
和DataRelation
类可以实现相同的功能。
更重要的是,文档明确指出:
此功能将在a中删除 未来版本的Windows。避免使用 这项功能在新的开发工作中, 并计划修改那些应用程序 目前使用此功能。代替, 应用程序应使用XML。
答案 1 :(得分:0)
这不是您问题的直接答案,因此如果您必须使用分层行集,则忽略它。 我记得大约9年前读过这个功能,但从那时起就没有看过它。我认为这是错误的方式。另一方面,我确实使用了常见的表表达式(特别是递归表达式)并发现它们具有很大的价值(http://msdn.microsoft.com/en-us/library/ms186243.aspx)。 我认为分层行集应该做的是对象关系映射,并且那些行集无论如何都不能成为好的ORM(NHibernate要好得多)。