OLE DB文檔記錄了一個帶有SQL示例的hierarchial rowset feature,但未指出哪些DB提供程序支持它。 JET和SQL Server是否支持此功能?他們是否使用與文檔中相同的語法,或者他們自己的擴展語法?JET和SQL Server是否支持分層行集?
回答
是的,它被支持。過去我已經使用過它了。此功能可以使用隨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服務器:
Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=ServerNameOrAddress;Initial Catalog=DatabaseName;User ID=;Password=
有幾件事情值得一提:
的SHAPE語法可以(012)尷尬),因爲你的 查詢變得更加複雜,所以請記住 。
如果您使用.NET,則可以使用
DataSet
和DataRelation
類實現相同的功能。更重要的是,該文件明確指出:
此功能將在Windows的 未來的版本中刪除。避免在新開發工作中使用 此功能, 並計劃修改 當前使用此功能的應用程序。相反, 應用程序應該使用XML。
我深入研究了Access子數據表的內容(A2000),並用MSDataShape提供程序快速深入到雜草中。鑑於Access仍然支持當前版本的子數據表,如果不在代碼中,UI組件仍然支持它。另外請記住,Jet曾經是MDAC的一部分,但在Jet成爲Windows的一個組件之後被刪除了一段時間(即Win2000)。鑑於A2000以後似乎對MSDataShape有一定的依賴性,我想知道如果您安裝了Access,支持是否存在。 – 2010-08-23 20:02:57
這不是您的問題的直接答案,所以如果您必須使用分層行集,請忽略它。 我記得大約9年前閱讀過這個功能,但從未見過它被使用過。我認爲這被證明是錯誤的路要走。另一方面,我確實使用了公共表格表達式(特別是遞歸表達式),並發現它們具有很高的價值(http://msdn.microsoft.com/en-us/library/ms186243.aspx)。 我認爲分層行集應該完成的是對象關係映射,而那些行集無論如何都不會產生好的ORM(NHibernate好得多)。
稍作澄清:公用表表達式特定於SQL Server,而問題同時適用於SQL Server和Jet/ACE。 – 2010-08-23 20:00:08
大衛,你是對的。 但考慮到整體技術選擇,我個人仍然會避免使用分層行集,我猜NHibernate會很高興地使用Access。開始工作有點棘手,但幾星期後還會付出代價。我多次看到,使用普通的OLEDB,ADO.NET等代替某種映射器(最初做簡單的事情)會導致代碼混亂。我使用精簡併意味着BLToolkit一段時間,它有一個很好的MapResultSets函數,它以聲明和麪向對象的方式實現了這種映射。 – vaso 2010-08-24 00:22:15
- 1. SQL Server是否支持分片?
- 2. XAMPP是否支持SQL Server?
- 3. log4net AdoNetAppender是否支持sql server 2008?
- 4. SQL Server 2012是否支持ProClarity?
- 5. SQL Server 2005是否支持datetime2
- 6. Sql Server 2000是否支持SSIS事務?
- 7. SQL Server是否支持BNF表示法?
- 8. NHibernate是否支持SQL Server 2005 Express?
- 9. FluentNHibernate是否支持SQL Server Compact Edition 4.0?
- 10. jOOQ是否支持鏈接的SQL Server?
- 11. 是否IBM WebSphere支持SQL Server 2008的
- 12. SQL Server是否支持散列索引?
- 13. SQL Azure是否支持CLR程序集?
- 14. VS 2013 SQL Server數據工具是否支持SQL Server 2008 R2?
- 15. 支持SQL Server 2005和2008
- 16. SQL Server 2008企業版試用版是否支持羣集和審計?
- 17. 是否支持mongodb子集
- 18. 支持sql server表
- 19. mysqli是否支持ms sql?
- 20. Azure SQL是否支持Kerberos?
- 21. ORMLITE是否支持SQL EXISTS?
- 22. 4GL語言是否支持分層查詢?
- 23. PDFBox是否支持專色和分色?
- 24. 未來SQL Azure中是否支持SQL Server Service Broker?
- 25. Microsoft Jet 4.0是否支持64位整數?
- 26. QListWidget是否支持分組?
- 27. Grails是否支持分片?
- 28. WSO2 Identity Server是否支持PostgreSQL?
- 29. vim是否通過phpdoc提供分層intellisense支持?
- 30. Subversion是否支持分支的別名
Jet和SQL Server是兩個完全不同的數據庫引擎,它們在SQL和各種事物方面的支持上截然不同。這是兩個不同的問題,但在我看來,只要嘗試一下就可以解決問題。你試過了嗎? – 2010-08-22 19:51:20