正如该线程中所讨论的,用户 jkdba 建议了一种不同的方法来访问表的列。由于原始线程正在修复一个附带问题,因此我打开了该线程以了解如何使用 invoke-sqlcmd 访问表的特定列。如果有人有不同的方法,请不要犹豫分享。:)
首先,您可以在使用数据适配器方法时使用相同的方法来访问列值。我更喜欢使用 PowerShell 等价物 ( Invoke-SQLCmd) SqlCommand,DataAdapter因为它的代码少得多,可读性强,并且对任何可能正在查看它的非开发人员都很友好。作为旁注,Invoke-SQLCmd 主要进行相同的底层 Dot Net 调用。
因此,在我进入Invoke-SQLCmd基本的对象属性访问之前,您可以对$DataSet您的其他帖子中的对象使用相同的属性访问技术,就像这样:
$DataSet.Tables。$DataSet.Tables.ColumnName。当您使用 时Invoke-SQLCmd,它将返回一个充满 Dot Net DataRow 的 PowerShell 数组对象。它基本上是相同的,只是代码更少。
运行 Invoke-Sqlcmd:
## Run Query and Get Date
$SQLResults = Invoke-Sqlcmd -ServerInstance 'Server\Instance' -Database 'DatabaseName' -Query 'select * from mytable'
## You can always see all of the properties and methods associated with the result object by running the command below
$SQLResults | Get-Member
## The above will show the PowerShell understood properties and implicit stuff it does.
## Adding -Force to the Get-Member call will show the true datatypes and properties.
Run Code Online (Sandbox Code Playgroud)
获取列的所有值:
## If you just want to list all of the values for a column you would do variable.property name aka results.columnname
$SQLResults.MyColumnName
## If The column name has a space in it, you can do this
$SQLResults.'My Column Name'
## Both of the above results will dump all of the values from the query results for the column of 'MyColumnName'
Run Code Online (Sandbox Code Playgroud)
访问一行的每一列:
foreach($Row in $SQLResults)
{
## this would print the value of each column for reach row one by one.
$Row.ColumnName
$Row.ColumnName1
$Row.ColumnName2
}
Run Code Online (Sandbox Code Playgroud)
在结果中添加一列:
使用该Add-Member函数执行一些逐行处理后,您可以轻松地向结果中添加一列。
foreach($Row in $SQLResults)
{
## some sort of row by row processing
if($Row.ColumnName -ilike 'some*value')
{
$Row | Add-Member -MemberType NoteProperty -Name 'MYNewColumnName' -Value 'IfTrueLogicValue'
}
else
{
$Row | Add-Member -MemberType NoteProperty -Name 'MYNewColumnName' -Value 'IfFalseLogicValue'
}
##Be Sure to output the row
$Row
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4934 次 |
| 最近记录: |