Sql server Powershell API请求问题-非常奇怪

Sql server Powershell API请求问题-非常奇怪,sql-server,api,powershell,Sql Server,Api,Powershell,我正在从美国农业部食品API获取各种食品的营养报告。Im在请求中使用powershell脚本,USDA文档中规定每个请求最多有1500条记录。我可以将这些值一直拉到max=164,但只要我尝试将其更改为165,我就会在“S”附近得到一个不正确的语法错误。有什么线索可以解释是什么原因造成的吗?下面是代码和错误 附言: Function Add-APIData ($server, $database, $text) { $scon = New-Object System.Data.

我正在从美国农业部食品API获取各种食品的营养报告。Im在请求中使用powershell脚本,USDA文档中规定每个请求最多有1500条记录。我可以将这些值一直拉到max=164,但只要我尝试将其更改为165,我就会在“S”附近得到一个不正确的语法错误。有什么线索可以解释是什么原因造成的吗?下面是代码和错误

附言:

    Function Add-APIData ($server, $database, $text)
    {

$scon = New-Object System.Data.SqlClient.SqlConnection
$scon.ConnectionString = "SERVER=$server;DATABASE=$database;Integrated Security=true"

$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.Connection = $scon
$cmd.CommandText = $text
$cmd.CommandTimeout = 0

$scon.Open()
$cmd.ExecuteNonQuery()
$scon.Close()
$cmd.Dispose()
$scon.Dispose()
    }
    //this is where the max value is stored 
    [string]$webstring = "https://api.nal.usda.gov/ndb/nutrients/?format=json&max=164&api_key=CLJnYzvrhMBcFtoQ4hohIL4Scs3tiRpOFXS7UhHM&nutrients=205&nutrients=204&nutrients=208&nutrients=269&fg=0100"
    $webget = New-Object System.Net.WebClient
    $result = $webget.DownloadString($webstring)

$result = ConvertFrom-Json $result
$add = @()

foreach ($r in $result.report.foods){

        $add += "INSERT INTO BRUH VALUES ('" + $r.ndbno + "','" + $r.name + "')"


}

    Add-APIData -server "NATHAN\SQLEXPRESS" -database "Lab2" -text $add
错误:

调用带有0个参数的ExecuteOnQuery时出现异常:“S”附近的语法不正确。 字符串后未闭合的引号。 第12行字符:5 +$cmd.ExecuteNonQuery + ~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified::[],MethodInvocationException
+FullyQualifiedErrorId:SqlException

最可能的情况是,数据中有一个撇号单引号。由于将字符串连接到INSERT语句中,数据库将无法正确解析这些字符串,这是SQL注入攻击的主要原因之一

如果您将查询输出到控制台,然后将其粘贴到SSMS中,那么语法高亮显示将快速向您显示这一点

第二种可能性是您超过了查询允许的最大长度

将代码更改为使用参数化查询,并一次执行一个INSERT,而不是一次执行一个大得离谱的批处理