Powershell - 附加到现有DataSet

时间:2013-10-29 15:28:27

标签: powershell datatable dataset

我在powershell(1.0)中有一个返回DataSet的SQL语句。现在我在一个循环中运行这个SQL语句,迭代一个参数。我想将从我的函数Exec​​-SQL-Query返回的DataSet追加到之前调用的现有DataSet中...我该怎么做?我尝试使用DataTables和DataSet做一些事情,但没有用。

foreach ($id in $idList)
                {               
                    $Parameters.Add($parameterKey,"$id")
                    $dataSet = Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn
                    # I would like to do something like:
                    #$dataSet.Add($dataSet.Tables[0])
                    $Parameters = @{}
                    $i++
                }

函数Exec​​-Sql-Query工作正常,已经过测试。

1 个答案:

答案 0 :(得分:0)

在我看来,您只是尝试将返回的数据集中的表附加到原始数据集中。这不会起作用,因为每次调用数据库时都会消除$ dataset。

相反,在循环外部声明一个空数据集,然后将返回的表添加到其中。

$myDataSet = New-Object System.Data.Dataset

foreach ($id in $idList)
            {               
                $Parameters.Add($parameterKey,"$id")
                $dataSet = Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn

                # Now add the returned table to $myDataSet:
                $myDataSet.Tables.Add($dataSet.Tables[0])
                $Parameters = @{}
                $i++
            }

这将导致数据集包含多个表。

我没有办法对此进行测试,但如果您决定附加到$ dataset并且$ dataset已经在其他地方实例化,那么您也可以尝试这样做:

$dataset.Tables.Add((Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn).Tables[0])

我很想知道这是否有效。让我知道。