C# 使用GetSchemaTable()仅检索列名
是否可以使用C# 使用GetSchemaTable()仅检索列名,c#,sql,C#,Sql,是否可以使用GetSchemaTable()仅检索列名 我一直在尝试(仅)使用此方法检索列名,是否可能 DataTable table = myReader.GetSchemaTable(); foreach (DataRow myField in table.Rows) { foreach (DataColumn myProperty in table.Columns) { fileconnectiongrid.Rows.Add(myP
GetSchemaTable()
仅检索列名
我一直在尝试(仅)使用此方法检索列名,是否可能
DataTable table = myReader.GetSchemaTable();
foreach (DataRow myField in table.Rows)
{
foreach (DataColumn myProperty in table.Columns)
{
fileconnectiongrid.Rows.Add(myProperty.ColumnName + " = "
+ myField[myProperty].ToString());
}
}
这段代码检索了很多不需要的表数据,我只需要一个包含
列名!: 您需要使用:
:
该查询仅返回列信息。仅使用SchemaOnly时
SQL Server的.NET Framework数据提供程序位于该语句之前
在设置为FMTONLY ON的情况下执行
列名位于每行的第一列中。我认为不可能忽略其他列信息,如ColumnOrdinal、ColumnSize、NumericPrecision
等等,因为在这种情况下,您不能使用reader.GetString
,而只能使用reader.GetSchemaTable
但是,如果只需要列名,则循环不正确:
foreach (DataRow col in schema.Rows)
{
Console.WriteLine("ColumnName={0}", col.Field<String>("ColumnName"));
}
foreach(schema.Rows中的数据行列)
{
Console.WriteLine(“ColumnName={0}”,col.Field(“ColumnName”);
}
如果您只想显示列名,请将代码更改为以下。您的原始代码不仅试图显示列名,还试图显示实际的数据值
DataTable table = myReader.GetSchemaTable();
foreach (DataRow myField in table.Rows)
{
foreach (DataColumn myProperty in table.Columns)
{
fileconnectiongrid.Rows.Add(myProperty.ToString());
}
}
这将为您提供所有列名,您可以将它们放在
字符串[]
中,并根据需要使用它们
foreach(var columnName in DataTable.Columns)
{
Console.WriteLine(columnName);
}
仍然返回所有数据:-(可能我的循环有问题。@user1495962:列名在每行的第一列。我认为不可能忽略其他列信息,如
ColumnOrdinal、ColumnSize、NumericPrecision
等。编辑我的应答器yid设置时运气不佳
foreach(var columnName in DataTable.Columns)
{
Console.WriteLine(columnName);
}
//Retrieve column schema into a DataTable.
schemaTable = reader.GetSchemaTable();
int index = schemaTable.Columns.IndexOf("ColumnName");
DataColumn columnName = schemaTable.Columns[index];
//For each field in the table...
foreach (DataRow myField in schemaTable.Rows)
{
String columnNameValue = myField[columnName].ToString();
Console.WriteLine("ColumnName " + columnNameValue);
}