OLE DB 文档记录了分层行集功能,带有 SQL 示例,但没有说明哪些 DB 提供程序支持它。JET 和 SQL Server 是否支持此功能?他们使用与文档中相同的语法,还是他们自己的扩展语法?
问问题
345 次
2 回答
2
是的,它受支持。我过去用过很多次。使用MDAC 附带的数据整形服务(在名为 Msadds.dll 的文件中)可以使用此功能。OLE DB 提供程序已命名MSDataShape
,您将使用SHAPE 命令生成分层结果。连接字符串语法类似于以下内容:
喷射:
Provider=MSDataShape;Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=PathToMyDatabase.mdb;
SQL 服务器:
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=ServerNameOrAddress;Initial Catalog=DatabaseName;User ID=;Password=
有几点值得注意:
随着您的查询变得更加复杂,SHAPE 语法会变得非常笨拙(且笨拙),因此请记住这一点。
如果您使用的是 .NET,则可以使用
DataSet
和DataRelation
类实现相同的功能。更重要的是,文档明确指出:
此功能将在 Windows 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。相反,应用程序应该使用 XML。
于 2010-08-23T08:16:55.480 回答
0
这不是您问题的直接答案,因此如果您必须使用分层行集,请忽略它。我记得大约 9 年前读过有关此功能的信息,但从那以后就没有看到它被使用过。我认为事实证明这是错误的方法。另一方面,我确实经常使用公用表表达式(尤其是递归表达式),并发现它们很有价值(http://msdn.microsoft.com/en-us/library/ms186243.aspx)。我认为分层行集应该做的是对象关系映射,而这些行集无论如何都不能产生好的 ORM(NHibernate 要好得多)。
于 2010-08-23T00:45:53.087 回答