我使用ADODB连接从数据库查询中获得了一个二维数组。简而言之,在打开连接后,我通过以下方式检索记录集:
sizeof
我想查看特定列的前10行。所以,我试过了:
$count
但它成功地失败了:
You cannot index into a 2 dimensional array with index [0]. At line:1 char:1 + $rows[0,(0..9)] + ~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NeedMultidimensionalIndex
该数组有1000行和200多列。我可以使用语法:
package main
import (
"net/http"
"fmt"
"os"
"crypto/tls"
)
func main(){
client := &http.Client{
Transport: &http.Transport{
DisableKeepAlives: false,
MaxIdleConnsPerHost: 10,
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
fmt.Println(client)
req, _ := http.NewRequest("GET", os.Args[1], nil)
_, err := client.Do(req)
if err != nil {
fmt.Println("Something bad happened: ", err)
}
}
没有问题。
我在这里缺少什么?
答案 0 :(得分:3)
索引运算符接受值列表,但如果您的数组具有维度> 1该列表必须是数组列表,以便每个列表元素标识原始数组的一个元素。
$indexes = 0..9 | ForEach-Object { ,@(0, $_) }
$rows[$indexes]
,@(0, $_)
中的前导逗号阻止PowerShell通过将数据包装到另一个展开的数组中来展开数组@(0, $_)
。
基本上,您需要构建一个标识要访问的数组元素的元组列表,然后将该列表与索引运算符一起使用。
$rows[0][0..9]
不起作用,因为你有一个二维数组,而不是一个锯齿状数组(一个数组数组)。
答案 1 :(得分:0)
由于您正在使用ADODB.Recordset对象,因此您可以使用特定方法来访问数据。
要从第一行获取值,请输入第一列:
$rows.GetValue(0,0)
第一行,第二栏:
$rows.GetValue(1,0)
第二行,第六栏:
$rows.GetValue(5,1)
等