powershell - 带有字符参数的 Powershell -invokesql
问题描述
我有读取 excel 文件并在 sql 数据库中搜索值的代码。这是代码的一部分:
for ($i=1; $i -le $rowMax-1; $i++)
{
$name = $sheet.Cells.Item($rowName+$i,$colName).text
$mail = $sheet.Cells.Item($rowMail+$i,$colMail).text
#test $Query = ‘ SELECT * FROM dbo.tbl1 where value = ‘ + “‘” +$mail + “‘”
$Query = ‘ SELECT * FROM dbo.tbl1 where id = 3’
Invoke-Sqlcmd -serverinstance $DatabaseServerName -Database $Database -Username $Uid -Password $Pwd -query $Query -ErrorAction Stop
Write-Host ("My Name is: "+$name)
Write-Host ("My mail is: "+$mail)
Write-Host $query
}
#close excel file
$objExcel.quit()
如果我用 number 查询(SELECT * FROM dbo.tbl1 where id = 3)
,就可以了:
id : 3
className : PersonBase
keyValue : 3
typeCd : 6
value : karen.g@hotmail.com
description :
usermodify :
datemodify :
My Name is: G Karen
My mail is: karen.g@hotmail.com
SELECT * FROM dbo.tbl1 where id = 3
如果我使用查询执行:
$Query = ‘ SELECT * FROM dbo.tbl1 where value = ‘ + “‘” +$mail + “‘”
我收到此错误:
Invoke-Sqlcmd : ''' 附近的语法不正确。消息 102,级别 15,状态 1,过程,第 1 行。在第 8 行 char:1 + Invoke-Sqlcmd -serverinstance $DatabaseServerName -Database $Database ... + ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException + FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
当我调试时,对我来说,输出看起来不错。我可以将它粘贴到服务器上,并且 select 语句可以正常工作:
My Name is: G Karen
My mail is: karen.g@hotmail.com
SELECT * FROM dbo.tbl1 where value = 'karen.g@hotmail.com'
出了什么问题?
解决方案
推荐阅读
- spring-batch - Spring Batch - OutOfMemoryError
- karate - 空手道 UI:处理来自另一个功能文件的身份验证
- javascript - 每次打开时重复的模态数
- linux - Sudoer 没有为 python3 使用相同的环境
- javascript - Webpack:库的预构建生命周期钩子
- python - 如何在 Python PyPi 正则表达式模式中引用命名捕获组
- c++ - 作为方法参数的静态方法(作为 lambda)
- node.js - 当用户连接 nodejs mongodb Stripe 时解锁具有永久访问权限的视频教程
- java - KafkaJaasLoginModuleInitializer 缓存登录配置导致问题
- php - Jquery / Ajax 表单提交不会转发 POST 数据