복붙노트

[SQL] GetSchemaTable ()를 사용하여에만 열 이름을 검색하는

SQL

GetSchemaTable ()를 사용하여에만 열 이름을 검색하는

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

이 코드는 테이블 데이터의 많은 원치 않는 검색, 난 단지가 포함 된 목록이 필요합니다 열 이름! :

해결법

  1. ==============================

    1.당신은 사용가 ExecuteReader (CommandBehavior.SchemaOnly))에 필요

    당신은 사용가 ExecuteReader (CommandBehavior.SchemaOnly))에 필요

    DataTable schema = null;
    using (var con = new SqlConnection(connection))
    {
        using (var schemaCommand = new SqlCommand("SELECT * FROM table", con))
        {
            con.Open();
            using (var reader = schemaCommand.ExecuteReader(CommandBehavior.SchemaOnly))
            {
                schema = reader.GetSchemaTable();
            }
        }
    }
    

    SchemaOnly :

    열 이름은 각 행의 첫 번째 열이다. 나는이 경우 다른 열 ColumnOrdinal, ColumnSize가, NumericPrecision 같은 정보 그래서 당신이 reader.GetString를 사용할 수 없기 때문에에 있지만 reader.GetSchemaTable를 생략 할 수 있다고 생각하지 않습니다.

    만 열 이름을 원한다면 루프가 올바르지 않습니다 :

    foreach (DataRow col in schema.Rows)
    {
        Console.WriteLine("ColumnName={0}", col.Field<String>("ColumnName"));
    }
    
  2. ==============================

    2.당신이 원하는 모든 열 이름을 표시하는 경우 아래에 코드를 변경합니다. 원래 코드는 열 이름을 표시 할뿐만 아니라 노력뿐만 아니라 아니라 실제 데이터 값을 표시하려고했다.

    당신이 원하는 모든 열 이름을 표시하는 경우 아래에 코드를 변경합니다. 원래 코드는 열 이름을 표시 할뿐만 아니라 노력뿐만 아니라 아니라 실제 데이터 값을 표시하려고했다.

    DataTable table = myReader.GetSchemaTable();
    
    foreach (DataRow myField in table.Rows)
    {
        foreach (DataColumn myProperty in table.Columns)
        {
            fileconnectiongrid.Rows.Add(myProperty.ToString());
        }
    }
    
  3. ==============================

    3.이것은 당신이 문자열 []에 배치하고 당신이 좋아하는 무엇을 그들과 함께 할 수있는, 당신에게 모든 열 이름을 제공 할 것입니다.

    이것은 당신이 문자열 []에 배치하고 당신이 좋아하는 무엇을 그들과 함께 할 수있는, 당신에게 모든 열 이름을 제공 할 것입니다.

    foreach(var columnName in DataTable.Columns)
    {
      Console.WriteLine(columnName);
    }
    
  4. ==============================

    4.

    //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);
      }
    
  5. from https://stackoverflow.com/questions/12160976/using-getschematable-to-retrieve-only-column-names by cc-by-sa and MIT license