如何通过SQL查询在MS访问中获取链接的ODBC表的列

发布于 2025-02-11 01:54:48 字数 336 浏览 2 评论 0原文

我已经从SQL Server和Excel链接了MS Access数据库中的几个表。现在,我想使用JDBC从Java应用程序查询它们。但是,当我运行查询时,从sys.msysobjects中选择 * type = 4;> 我可以看到这些表的列表,但是我也想列出这些表的列。我已经查询inovery_schema.columnsuca_metadata.columnsinovys_schema.schema.schema.schema.shemy_columns等。 。

高度赞赏实现上述任何帮助。

谢谢

I have linked a couple of tables in MS Access database from SQL Server and also from Excel. Now I want to query them from a Java application using jdbc. But when I run the query SELECT * FROM sys.MSysObjects Where Type = 4; I am able to see the list of those tables, but I also want to list the columns for those tables. I have queried Information_schema.Columns, UCA_METADATA.Columns, Information_schema.System_Columns etc.. and lot more system tables of MS Access but did not succeed.

Any help to achieve the above is highly appreciated.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初见终念 2025-02-18 01:54:48

如果您使用 sys_extended_properties ,请注意:它仅包含在SQL中填充的描述的字段。

如果您不想做这项工作,则可能必须使用左JOIN。

对于下面的 ms-access查询示例下面我们必须链接这些系统 sql 表:
sys_tables sys_extdended_properties sys_columns sys_types inofy_schema_columns

SELECT sysC.name AS [Column], 
       [sysTyp]![name] & " (" & [sysC]![max_length] & ")" AS Type, 
       sysC.is_hidden AS Hidden, 
       sysEP.value AS Description,  
       sysC.is_nullable AS [Null], 
       ISC.COLUMN_DEFAULT AS [Default], 
       sysC.is_identity AS [Identity], 
       ISC.TABLE_CATALOG AS Db, 
       ISC.TABLE_SCHEMA AS Owner, 
       sysT.name AS [Table], sysEP.major_id, sysEP.minor_id 
FROM (((sys_extended_properties AS sysEP 
RIGHT JOIN sys_columns AS sysC 
   ON (sysEP.major_id = sysC.object_id) AND (sysEP.minor_id = sysC.column_id)) 
INNER JOIN sys_tables AS sysT 
   ON sysC.object_id = sysT.object_id) 
INNER JOIN sys_types AS sysTyp 
   ON sysC.system_type_id = sysTyp.system_type_id) 
INNER JOIN INFORMATION_SCHEMA_COLUMNS AS ISC 
   ON (sysC.name = ISC.COLUMN_NAME) AND (sysT.name = ISC.TABLE_NAME)
WHERE (((ISC.TABLE_CATALOG)=[YourDatabaseName]) AND ((ISC.TABLE_SCHEMA)="dbo"))
ORDER BY sysEP.major_id, sysEP.minor_id;

If you use sys_extended_properties, a note: it only contains fields with a description filled in SQL.

If you don't want to do this work you might have to use Left Join.

For the folowing MS-Access Query example below we must link these system SQL tables:
sys_tables, sys_extended_properties, sys_columns, sys_types, INFORMATION_SCHEMA_COLUMNS.

SELECT sysC.name AS [Column], 
       [sysTyp]![name] & " (" & [sysC]![max_length] & ")" AS Type, 
       sysC.is_hidden AS Hidden, 
       sysEP.value AS Description,  
       sysC.is_nullable AS [Null], 
       ISC.COLUMN_DEFAULT AS [Default], 
       sysC.is_identity AS [Identity], 
       ISC.TABLE_CATALOG AS Db, 
       ISC.TABLE_SCHEMA AS Owner, 
       sysT.name AS [Table], sysEP.major_id, sysEP.minor_id 
FROM (((sys_extended_properties AS sysEP 
RIGHT JOIN sys_columns AS sysC 
   ON (sysEP.major_id = sysC.object_id) AND (sysEP.minor_id = sysC.column_id)) 
INNER JOIN sys_tables AS sysT 
   ON sysC.object_id = sysT.object_id) 
INNER JOIN sys_types AS sysTyp 
   ON sysC.system_type_id = sysTyp.system_type_id) 
INNER JOIN INFORMATION_SCHEMA_COLUMNS AS ISC 
   ON (sysC.name = ISC.COLUMN_NAME) AND (sysT.name = ISC.TABLE_NAME)
WHERE (((ISC.TABLE_CATALOG)=[YourDatabaseName]) AND ((ISC.TABLE_SCHEMA)="dbo"))
ORDER BY sysEP.major_id, sysEP.minor_id;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文