仅使用DbConnection.GetSchema方法获取表列

时间:2011-12-26 08:30:49

标签: sql-server-2005 getschematable

使用C#和SQL Server 2005以及使用DbConnection.GetSchema()方法,我想只获取所有表的列(而不是视图)。我找到了两个与此相关的集合名称

  1. Columns返回表格和视图的列
  2. ViewColumns返回所有视图的列
  3. 以上两者都不返回表列,也没有任何属性来过滤表列。

    任何帮助都得到尊重。

1 个答案:

答案 0 :(得分:0)

我没有看到使用此特定API执行此操作的任何简单方法 - 但为什么不使用这样的查询来获取您的信息?

SELECT
    c.name AS 'ColumName',
    ty.Name AS 'TypeName',
    c.max_length,
    c.is_identity,
    c.is_nullable,
    t.name AS 'TableName'
FROM sys.columns c
INNER JOIN sys.types ty ON c.user_type_id = ty.user_type_id
INNER JOIN sys.tables t ON c.object_id = t.object_id

只需将其加载到SqlCommand并针对您拥有的打开连接执行它,并将结果读入某些DataTable或其他结构供您使用。这为您提供表格列 - 以及所有这些列。