代码之家  ›  专栏  ›  技术社区  ›  CuriousOne

从PowerShell sql查询中获取列名称

  •  0
  • CuriousOne  · 技术社区  · 7 年前

    我正在从PowerShell运行sql查询。我可以正确地获得行数据和列数,但我需要从查询中生成的sql表中收集列的名称。例如,如果我的桌子看起来像这样:

        Column1    Column2   
    1 |row1Item1 |row1Item2 |
    2 |row2Item1 |row2Item2 |
    3 |row3Item1 |row3Item2 |
    

    $cmd = new-object System.Data.SqlClient.SqlCommand($sqlquery, $connection)
    $connection.Open()
    $reader = $cmd.ExecuteReader()
    $reader.FieldCount   #returns the number of columns --> 2
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Mathias R. Jessen    7 年前

    SqlDataAdapter.Fill() DataTable 将保留列名的对象:

    $cmd = new-object System.Data.SqlClient.SqlCommand($sqlquery, $SqlConnection)
    $SqlConnection.Open()
    
    # Create adapter, associate with command
    $Adapter = [System.Data.SqlClient.SqlDataAdapter]::new($cmd)
    
    # Create empty DataTable
    $DataTable = New-Object System.Data.DataTable
    
    # Fill datatable based on query
    $Adapter.Fill($DataTable)
    
    $DataTable.Rows[0] # returns a DataRow object with correct column names
    
        2
  •  0
  •   Andrej Hucko    7 年前

    尝试查找

    $table = New-Object System.Data.DataTable
    

    希望有帮助!

    编辑: 在c中是这样的

    SqlConnection conn = new SqlConnection(ConnectionString); 
    
    SqlDataAdapter da = new SqlDataAdapter(); 
    
    SqlCommand cmd = conn.CreateCommand(); 
    
    cmd.CommandText = SQL; 
    
    da.SelectCommand = cmd; 
    
    DataSet ds = new DataSet(); 
    
    conn.Open(); 
    
    da.Fill(ds); 
    conn.Close();return ds;