【发布时间】:2014-01-20 23:14:22
【问题描述】:
我需要从我通过FillSchema() 方法填充的DataTable 中获取真实的列名,
这是我使用的查询(SELECT ID AS [SNO],CATEG_NAME AS [Category] FROM Categories)
var dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT ID AS [SNO],CATEG_NAME AS [Category] FROM Categories",conn);
da.FillSchema(dt, SchemaType.Source);
dt.FillBySql(sql);
当我检查dt.columns 时,我发现有 2 列具有与查询中提到的相同别名。我该怎么做才能得到真正的专栏names(id, categ_name)?
【问题讨论】:
-
如果你不想使用别名,为什么还要使用它们?
SELECT * FROM Categories很容易获得所有列名。另一种选择是ExecuteReader(CommandBehavior.SchemaOnly))。 stackoverflow.com/a/12161051/284240 另一个选项是使用数据库中的INFORMATION_SCHEMA.COLUMNS表。 stackoverflow.com/a/600457/284240 -
我使用别名为数据网格视图中显示的每个字段制作标题,还需要检索真实的列名以在另一个重要任务中使用它们
-
请注意,当我使用 ExecuteReader(CommandBehavior.SchemaOnly) 时,它返回的模式表包含有关上述查询中每一列的所有内容,但不幸的是它无法识别别名列并给我 ColumnName = SNO ,, , BaseColumnName = SNO ,,, IsAliased =