如何使用 OleDb 获取视图的结构/查询?

Posted

技术标签:

【中文标题】如何使用 OleDb 获取视图的结构/查询?【英文标题】:How to obtain a view's structure/query using OleDb? 【发布时间】:2021-06-11 05:27:28 【问题描述】:

我有一个从 Access 2010 数据库文件 (.mdb) 读取数据的 ASP.Net 应用程序。

我可以像这样轻松列出数据库中的所有表和视图:

string sql = "select name from msysobjects where type in (1,5)";
OleDbCommand cmd = new OleDbCommand(sql,con);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dataTable);   // now dataTable contains all ojbects' names I have created in access

我想询问的是不依赖 Access 的表/视图的结构。 IE,使用外部 OleDb 命令。

在 Oracle 中,我可以通过运行命令来做到这一点

describe table_name;
describe view_name;
describe procedure_name;

但是如何在 MS Access 中完成呢?

【问题讨论】:

使用 GetSchema 给出表和列的列表。 docs.microsoft.com/en-us/dotnet/framework/data/adonet/… 【参考方案1】:

与所有关系数据库一样,存在表中的表(反射数据)。这些通常是隐藏的,但您可以从 msysObjects 中选择 *。过滤类型将允许您将表与查询与报表与表单区分开来,但也允许将内部表与映射表区分开来。

如果您希望它们在导航窗格中列出,则右键单击窗格,选择导航选项,然后单击显示系统对象复选框。

【讨论】:

以上是关于如何使用 OleDb 获取视图的结构/查询?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Oledb 对象插入 ms-access 查询获取无效查询异常

如何使当前视图的特定区域成为我的视图?

如何获取有关 BigQuery 中正在使用/查询的视图和数据集的使用数据?

SQL Server 如何安装 OLEDB 驱动

如何从 bigquery 中的视图中获取已保存的查询

如何从 VB.NET 的视图中获取 SQL 查询