【问题标题】:How to pass the parameter in SQL query from PowerShell如何从 PowerShell 传递 SQL 查询中的参数
【发布时间】:2019-03-20 10:18:26
【问题描述】:

我在 PowerShell 中有这段代码,它执行 SQL 查询来更新我的表:

$Connection=new-object data.sqlclient.sqlconnection "server=server;database=mydb;trusted_connection=true;"
$Connection.open()

For ( $i = 0; $i -le $ActID.Length; $i ++ ) { 
    $cmd = New-Object System.Data.SqlClient.SqlCommand
    $cmd.Connection = $Connection
    $cmd.CommandText = 
    "
    update Table 
    set Note = @PATH
    "
    $cmd.Parameters.Add("@PATH", $ActID[$i].Values) | Out-Null

    $cmd.ExecuteNonQuery()
}

我尝试使用此字符串中定义的变量更新表:

$cmd.Parameters.Add("@PATH", $ActID[$i].Values) | Out-Null

但是当我执行脚本时,错误日志显示 $ActID[$i] 中没有传递任何值

还有其他方法可以在 powershell 查询中传递参数(变量)吗?

【问题讨论】:

    标签: sql powershell parameters


    【解决方案1】:

    可能是什么错误:

    $i -le $ActID.Length;
    

    应该是这样

    $i -lt $ActID.Length;
    

    您还可以使用简化代码的管道:

    $actId | % { ..... $cmd.Parameters.Add("@PATH", $_.Values) | Out-Null .... }
    

    除了你使用的属性是Values - 这真的是你想要的吗?值看起来像一些东西的集合。也许您想使用单个值。

    【讨论】:

    • @Zshava - 还要注意你在该查询中没有 WHERE 子句 - 我不知道这是否是你的意图......
    • @thedugas - 这是我的意图,我真正的查询更复杂,但在这个问题中并不重要
    • 这不起作用,它基本上把@PATH 当作我试图插入的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2020-12-22
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多