Работа с наборами данных SQL (System.Data.InternalDataCollectionBase) после запроса - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть таблица базы данных, которая выглядит следующим образом:

ID|IPAddresses|HostNames
1 |192.168.1  |TestComp1
2 |192.168.2  |TestComp2
3 |192.168.3  |TestComp3

Команды PowerShell:

$SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SQLCommand
$SQLDataset = New-Object System.Data.DataSet
$SqlAdapter.Fill($SQLDataset) | Out-Null

Как мне работать с $SQLDataset.Tables?Например:

  1. Это многомерный массив?

  2. Просмотреть столбцы?

  3. Получить значение, которое является примером строки 3, столбца 2?

  4. Превратить весь столбец в массив?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

1.Это многомерный массив?

Нет.Это DataSet объект, который (помимо прочего) содержит ноль или более DataTable объектов.

2.Посмотреть столбцы?

$tbl = $SQLDataset.Tables[0]
$tbl

3.Получить значение, которое является примером строки 3, столбца 2?

Не обращаться к столбцам по номеру, а по имени:

$tbl.Rows[2].IPAddresses

Индексы PowerShell равны нулюна основе, поэтому .Rows[2] относится к третьему ряду.

4.Превратить весь столбец в массив?

Развернуть значение соответствующего поля каждой строки:

$arr = $tbl.Rows | Select-Object -Expand IPAddress
0 голосов
/ 26 февраля 2019

Вы можете использовать командлет Invoke-Sqlcmd. Invoke-Sqlcmd

Пример.$var = Invoke-sqlcmd -query "select * from #table" -Database #db -Username #un -Password #pass

Затем вы можете выбрать $var.columnName1, $var.columnName2

Это более простой способ манипулирования выводом SQL в PowerShell.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...