使用SqlConnection.GetSchema仅获取表(无视图)

时间:2012-11-04 06:27:45

标签: c# sql-server ado.net views sqlconnection

当我使用

SqlConnection.GetSchema("Tables");

它返回目标数据库的所有表和视图。

有没有办法只返回牌桌?我所做的所有研究表明我正确地做了这一点,但它总是返回视图,就像它们是表格一样。我在调试中挖掘了DataTable,我甚至找不到区别。报告的数据类型相同......据我所知,它无法区分视图和表。 (它确实有道理,因为所有意图和目的的视图都是一个表。)

我正在使用Northwind数据库进行测试。

我正在用C#编写应用程序。

以下是我为获取架构信息而运行的代码。很简单。

SQLCon.Open();
DataTable tables = SQLCon.GetSchema("Tables");
SQLCon.Close();

我非常想使用getschema方法而不必以另一种方式查询数据库......如果可能的话。

2 个答案:

答案 0 :(得分:6)

根据this article,返回的数据表格中有table_type列,可以告诉您它是VIEW还是BASE TABLE。 使用该列过滤掉C#端的视图。

答案 1 :(得分:4)

这是完整的语法

DataTable table = connection.GetSchema("Tables", new string[] { null, null, null, "BASE TABLE" });