2
我在从SQL Server中的简单存储过程中获取数据时遇到了一些困难。我有一个Powershell脚本,需要从3列填充变量(该过程只返回1行)使用Powershell从SQL Server 2008获取数据
这是我没有工作。不知何故,我没有正确引用列值。我尝试了各种方法,但通常会出现错误“无法索引到空数组”。我不想通过ResultSet迭代,我只是想直接设置一些值从一行返回到变量
$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
$conn.ConnectionString = `
"Server=ServerName;Database=ShopDB;Integrated Security=True"
$sqlQuery = new-object System.Collections.Specialized.StringCollection
$sqlQuery.Add("JobSettingsGet")
$Resultset = $conn.ExecuteWithResults($sqlQuery)
# $UserName = $table.Rows(0).Columns(0)
# error - Method invocation failed because [System.Data.DataTable] doesn't
# contain a method named 'Rows'.
# $UserName = $table.Rows[0].Columns[0]
# error - cannot index null array
# $UserName = $table.Row(0).Column(0)
# error - Cannot index into a null array, also Method invocation failed
# because [System.Data.DataTable] doesn't contain a method named 'Row'.
# $UserName = $table.Rows[0].Columns[1].Value
# error - cannot index null array
我想如果可能的话使用的列名了。
任何指针?
感谢, 西尔维亚
感谢您的信息。我可以连接到数据库,并使用foreach迭代器工作。但是,我想要做的是(因为我知道只有1行和3列)将实际数据转化为变量而不进行迭代。像下面的东西(它给出错误“无法索引到一个空数组”): $ UserName = $ table.rows [0] .columns [0] – Sylvia 2012-01-05 09:35:53
$ table.rows [0]应该是System.Data。没有Columns成员的DataRow。尝试使用item()方法:$ table.Rows [0] .item(“Login”)。 – vonPryz 2012-01-05 10:13:52
谢谢,它现在有效。任何有关何时最好使用sqldataadapter而不是其他数据访问方法(ExecuteWithResults等)的评论 – Sylvia 2012-01-05 13:06:34