Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用GetSchemaTable()仅检索列名_C#_Sql - Fatal编程技术网

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);
  }