数据表列名称

时间:2014-03-29 18:08:54

标签: c# sql

我正在开发一个应用程序,我正在执行大量的SQL查询。目前我正在尝试使用SQL查询的结果填充组合框,其中我使用此代码获取数据库中的所有表名:

tablesComboBox.DataSource = dataLayer.Query("SELECT * FROM INFORMATION_SCHEMA.TABLES");
tablesComboBox.DisplayMember = "TABLES";

public DataTable Query(string sql)
        {
            var result = new DataTable();
            using (var connection = GetConnection())
            using (var command = new SqlCommand(sql, connection))
            {
                connection.Open();
                result.Load(command.ExecuteReader(CommandBehavior.CloseConnection));
            }
            return result;
        }

我的问题是我无法填充组合框,因为我不知道返回的数据表的列名,也无法弄清楚如何访问它。 " TABLES"不起作用。我确信有一个简单的答案但我目前不知所措。

3 个答案:

答案 0 :(得分:0)

要获取表的列名,请使用

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='your table'

答案 1 :(得分:0)

我认为您不需要数据表名称。你只需要表的列名。 试试这个。

tablesComboBox.DisplayMember = "TABLE_NAME";

P.S。为了优化你的代码,你可以真正做到这一点,只需获取表名:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME <> 'sysdiagrams'

答案 2 :(得分:0)

上述查询返回的列的详细信息可以阅读from this link.

但是,如果您只对表名感兴趣,则应在上面的查询中添加条件

 DataTable t = myQuery(@"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
                        WHERE TABLE_TYPE = 'BASE TABLE'");

当然,DisplayMember属性应设置为

 tablesComboBox.DisplayMember = "TABLE_NAME";