Asp.net 传递参数以插入查询
由于我将参数Asp.net 传递参数以插入查询,asp.net,sql,sql-server,Asp.net,Sql,Sql Server,由于我将参数@ResponsibleEngineer传递给查询,上述查询无法执行。错误是“无效列名测试”测试是我作为参数值传递的值 @ResponsibleEngineer并且表中没有TEST这样的列。将参数传递到insert查询时会出现什么错误 参数周围需要语音标记: DECLARE @SQL1 VARCHAR(MAX) SET @SQL1='SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='+CAST(@Respo
@ResponsibleEngineer
传递给查询,上述查询无法执行。错误是“无效列名测试”
<代码>测试是我作为参数值传递的值
@ResponsibleEngineer
并且表中没有TEST
这样的列。将参数传递到insert查询时会出现什么错误 参数周围需要语音标记:
DECLARE @SQL1 VARCHAR(MAX)
SET @SQL1='SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='+CAST(@ResponsibleEngineer AS VARCHAR(500))+''
EXEC(@SQL1)
IF @@ROWCOUNT>0
BEGIN
SET @Result='EXIST'
否则,您将生成:
'SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='''+CAST(@ResponsibleEngineer AS VARCHAR(500))+''''
SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer=TEST'
因此,它正在寻找一列测试。通过将参数置于正在生成的语音标记中:
'SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='''+CAST(@ResponsibleEngineer AS VARCHAR(500))+''''
SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer=TEST'
然后,此查询将运行一个WHERE
子句,其中ResponsibleEngineer
列等于字符串值TEST您必须声明@ResponsibleEngineer
并设置其值。它基本上用作变量
SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='TEST'
试试这个:
DECLARE @ResponsibleEngineer varchar(10)
SET @ResponsibleEngineer = 'my test'
您的查询正在转换为
DECLARE @SQL1 VARCHAR(MAX)
SET @SQL1='SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='''+CAST(@ResponsibleEngineer AS VARCHAR(500))+''''
EXEC(@SQL1)
IF @@ROWCOUNT>0
BEGIN
SET @Result='EXIST'
您需要获得以下信息:
SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer=TEST
删除选定对象周围的空格。快速样品
SELECT * FROM tblResponsibleEngineer WHERE ResponsibleEngineer='TEST'
希望这能有所帮助。+1这会奏效,但当我看到这个问题时,我的问题是“为什么不使用参数化查询?”。