gpt4 book ai didi

c# - 在 PowerShell 中迭代多行数据

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:48 24 4
gpt4 key购买 nike

我正在编写一些 PowerShell 代码来连接到数据库,读取多行数据,然后通过 SqlDataReader 将它们返回。

我是按照“C# 方式”编写的,就像我在 C# 中编写的那样:

function ExecuteQuery($sql) {
$connection = new-object system.data.SqlClient.SQLConnection($ConnectionString);
$connection.Open();

$cmd = $connection.CreateCommand();
$cmd.CommandText = $sql;
$cmd.Connection = $connection
$reader = [System.Data.SqlClient.SqlDataReader]$cmd.ExecuteReader()
return $reader;
}

(此函数的调用者必须负责任地自行关闭连接。)

我预计,即使没有类型转换,我也会得到 System.Data.SqlClient.SqlDataReader 的实例。这很重要,因为我想使用 Read 逐行遍历,更不用说我想使用方括号按列名访问数据(按 ID 访问太脆弱了)。

不幸的是,我得到了 System.Data.Common.DataRecordInternal 的实例,它包含Read 方法,也不包含它允许我通过数组索引访问记录。

我的问题是:如何在 PowerShell 中读取和遍历多行数据?

最佳答案

有几种方法可以遍历数组的成员(在您的例子中是“数据行”)。第一个想到的是:

ForEach($Record in (ExecuteQuery $CommandString){
Do Stuff to $Record
}

或者您可以将其通过管道传输到 ForEach 循环(您可以通过这种方式通过管道输出,例如根据需要传输到 Out-File):

ExecuteQuery $CommandString | ForEach{Do stuff to $_}

或者,如果您真的想要更精细的控制,我想您可以使用 For 循环并执行如下操作:

$Results = ExecuteQuery $CommandString 
For($i=0;$i -le $Results.count;$i++){
Do stuff to $Results[$i]
}

关于c# - 在 PowerShell 中迭代多行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com