从数据库中列出用户定义的视图

List user defined views from database

有没有办法单独列出用户定义的视图。在 MSSQL 中,当我尝试使用 jdbc 的 DatabaseMetadata 的 getTables() 函数列出表和视图时,它显示了所有视图。但我不需要系统查看我的结果集。

DatabaseMetadata dmd = connection.getMetaData();
tablesResultSet= dmd.getTables(dbName, null, null, new String[] { "TABLE", "VIEW" });

这是我用来提取元数据的代码。谁能帮我解决这个问题?

您可以直接通过 SELECT 调用询问数据库并分析结果:

SELECT * FROM sys.objects WHERE [type]='V' AND is_ms_shipped=0

[type]='V' 将过滤 VIEWis_ms_shipped=0 将过滤用户创建的对象(不是从 MS 安装的)

Find details here

您必须考虑架构。 MS SQL 上的默认模式是 dbo。所以你对元数据的调用应该是:

DatabaseMetadata dmd = connection.getMetaData();
tablesResultSet= dmd.getTables(dbName, "dbo", null, new String[]   { "VIEW" });

或者你之前通过

获得所有模式
dmd.getSchemas(dbName,"%");

然后循环所有 'working' 模式。