【问题标题】:Powershell - Appending to existing DataSetPowershell - 附加到现有数据集
【发布时间】:2013-10-29 15:28:26
【问题描述】:

我在 powershell (1.0) 中有一个返回数据集的 SQL 语句。现在我在一个循环中运行这个 SQL 语句并迭代一个参数。我想将从我的函数 Exec-SQL-Query 返回的数据集附加到先前调用的现有数据集...我该怎么做?我尝试使用 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 工作正常,已经测试过了。

【问题讨论】:

    标签: powershell datatable dataset


    【解决方案1】:

    在我看来,您只是想将返回数据集中的表附加到原始数据集中。这是行不通的,因为每次调用数据库时都会清除 $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])
    

    我很想知道这是否有效。告诉我。

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      相关资源
      最近更新 更多