我正在学习Powershell脚本来自动执行一些SQL任务。我使用DataAdapter来填充数据集,我从控制台得到了一个正确的数字,表示选择了14列。但是,我坚持使用循环从数据集中打印出表的特定列。
更新:
1)TheMadTechnician解决了我的问题 - 一个SQL查询错误 2)我在这里更新了更正后的代码。另外,我添加了Method3来帮助其他人打印更好的格式化表格。
我的代码:
# $ConnectionString is the server and my account info.
$SqlQuery = $("SELECT * FROM MyTable")
$Connection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCommand = New-Object System.Data.SQLClient.SQLCommand($SqlQuery, $Connection)
$Connection.Open()
$DataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataAdapter.SelectCommand = $SqlCommand
$Dataset = New-Object System.Data.Dataset
$DataAdapter.Fill($Dataset)
$Connection.Close()
# Method1:
foreach ($Row in $Dataset.Tables[0].Rows) {
Write-Host "col_1:$($Row.Id) col_2:$($Row.CreatedDateTime) col_3:$($Row.DeactivatedDateTime)"
}
# Method2:
foreach ($Row in $Dataset.Tables[0].Rows) {
Write-Host "col_1:$($Row[0]) col_2:$($Row[1]) col_3:$($Row[2])"
}
# Method3:
for ($i = 0; $i -lt $Dataset.Tables.Count; $i++) {
$Dataset.Tables[$i] | format-table | out-host
}
答案 0 :(得分:0)
将您的查询更改为SELECT * FROM MyTable
,它应该有效。现在它只显示CreatedDateTime,因为这是您的查询返回的唯一内容。