我正在运行来自PowerShell的sql查询。我可以正确地获得行数据和列数,但我需要从查询中生成的sql表中收集列名。例如,如果我的表是这样的:
Column1 Column2
1 |row1Item1 |row1Item2 |
2 |row2Item1 |row2Item2 |
3 |row3Item1 |row3Item2 |
然后我需要的值是"Column1","Column2“。下面的代码将告诉我有2列,但我不知道如何获得这些列的名称。
$cmd = new-object System.Data.SqlClient.SqlCommand($sqlquery, $connection)
$connection.Open()
$reader = $cmd.ExecuteReader()
$reader.FieldCount #returns the number of columns --> 2
发布于 2017-08-14 15:28:45
使用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
发布于 2017-08-14 15:16:49
尝试查找
$table = New-Object System.Data.DataTable
在C#中有一些类似的东西,它更适合于访问从查询中获得的表。
希望它能帮上忙!
编辑:在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;
https://stackoverflow.com/questions/45677551
复制相似问题