我正在开发一个应用程序,我正在执行大量的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"不起作用。我确信有一个简单的答案但我目前不知所措。
答案 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";