JET和SQL Server是否支持分层行集?
OLEDB文档用SQL示例记录了一个数据库,但没有指出哪些DB提供程序支持它。JET和SQL Server是否支持此功能?它们是否使用与文档中相同的语法,或它们自己的扩展语法?这不是对您问题的直接回答,因此如果必须使用分层行集,请忽略它。 我记得大约9年前读过关于这个功能的文章,但从那以后就再也没有看到它被使用过。我认为这被证明是错误的做法。另一方面,我确实经常使用常用的表表达式(特别是递归表达式),并发现它们很有价值()。JET和SQL Server是否支持分层行集?,sql,sql-server,winapi,oledb,jet,Sql,Sql Server,Winapi,Oledb,Jet,OLEDB文档用SQL示例记录了一个数据库,但没有指出哪些DB提供程序支持它。JET和SQL Server是否支持此功能?它们是否使用与文档中相同的语法,或它们自己的扩展语法?这不是对您问题的直接回答,因此如果必须使用分层行集,请忽略它。 我记得大约9年前读过关于这个功能的文章,但从那以后就再也没有看到它被使用过。我认为这被证明是错误的做法。另一方面,我确实经常使用常用的表表达式(特别是递归表达式),并发现它们很有价值()。 我认为分层行集应该做的是对象关系映射,而这些行集无论如何都不能成为良好
我认为分层行集应该做的是对象关系映射,而这些行集无论如何都不能成为良好的ORM(NHibernate更好)。是的,它是受支持的。我过去经常用它。使用MDAC附带的(位于名为Msadds.dll的文件中)提供此功能。OLE DB提供程序名为
MSDataShape
,您可以使用来生成分层结果。连接字符串语法如下所示:
喷气式飞机:
SQL Server:
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=ServerNameOrAddress;Initial Catalog=DatabaseName;User ID=;Password=
一些值得注意的事情:
- 形状语法可能会变得非常复杂 像你一样笨拙(和笨拙) 查询变得更加复杂,所以请保持 这是我的想法
- 如果您使用的是.NET,则可以通过
和DataSet
类实现相同的功能DataRelation
- 更重要的是,文件明确指出:
Jet和SQLServer是两个完全不同的数据库引擎,它们在SQL和各种各样的东西方面的支持完全不同。这是两个独立的问题,但在我看来,这两个问题都很容易通过尝试解决。您试过了吗?小说明:常见的表表达式是针对SQL Server的,而问题是针对SQL Server和Jet/ACE.David,您是对的。但考虑到总体技术选择,我个人仍然会避免使用分层行集,我想NHibernate会很乐意使用Access。开始工作有点棘手,但几周后就会有回报。我见过很多次使用普通OLEDB、ADO.NET等而不是某种映射器(最初是为了保持简单)会导致代码混乱。我使用lean和mean BLToolkit有一段时间了,它有一个很好的MapResultSets函数,它以声明式和面向对象的方式实现了这种映射。我早在2000年就深入研究了Access子数据表的本质,很快就与MSDataShape提供程序结下了不解之缘。考虑到Access在当前版本中仍然支持子数据表,UI组件(如果不是在代码中)似乎仍然支持它。还请记住,Jet曾经是MDAC的一部分,但在Jet成为Windows组件(即Win2000)后的一段时间被删除。鉴于A2000以后的版本似乎对MSDataShape有一定的依赖性,我想知道如果您安装了Access,是否有支持。
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=ServerNameOrAddress;Initial Catalog=DatabaseName;User ID=;Password=