gpt4 book ai didi

sql-server - 将数组中的 PowerShell 值插入到 SQL Server 表中

转载 作者:行者123 更新时间:2023-12-02 23:01:34 25 4
gpt4 key购买 nike

powershell 中的以下代码将像这样插入到 SQL Server 表中

a aa aaa | b bb bbb

in one row, but I want

  a |   b aa |  bbaaa | bbb

on 3 separate rows.

$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString =
"server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$stringA = 'a', 'aa', 'aaa'
$stirngB = 'b', 'bb', 'bbb'
for ($i = 0; $i -lt 3; $i++) {
$sql = "INSERT INTO [dbo].[Server] (ServerName, UniqueID)
VALUES ('$stringA[$i]','$stringB[$i]')"
$Command.CommandText = $sql
$Command.ExecuteReader()
}
$Connection.Close()

如何操作我的代码以插入 3 行而不是 1 行?

最佳答案

PowerShell 仅对字符串进行简单的变量扩展。它不会按照您期望的方式扩展索引或属性访问等复杂表达式。表达式 "$stringA[$i]" 扩展为 $stringA 的字符串表示形式,后跟一个左方括号,即变量 $i 的值,和一个右方括号。 $stringA 的字符串表示形式是所有由 $OFS 字符(输出字段分隔符,默认为空格)连接的数组元素,因此您要先插入 a aa aaa[0],然后是 a aa aaa[1],然后是 a aa aaa[2]

有几种方法可以将数组的单个元素放入字符串中,例如

  • 字符串连接

    "... VALUES ('" + $stringA[$i] + "','" + $stringB[$i] + "')"
  • 子表达式

    "... VALUES ('$($stringA[$i])','$($stringB[$i])')"
  • format operator

    "... VALUES ('{0}','{1}')" -f $stringA[$i], $stringB[$i]

但是,在您的特定情况下,我不建议使用上述任何方法,因为所有这些方法都会使您的代码容易受到 SQL injection 的攻击。 .

你想做的是使用 prepared statement .像这样:

$sql = 'INSERT INTO [dbo].[Server] (ServerName, UniqueID) VALUES (@foo, @bar)'
$command.CommandText = $sql
$command.Parameters.AddWithValue('@foo', $stringA[$i])
$command.Parameters.AddWithValue('@bar', $stringB[$i])
$Command.ExecuteReader()

关于sql-server - 将数组中的 PowerShell 值插入到 SQL Server 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51090579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com