Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 传递参数以插入查询_Asp.net_Sql_Sql Server - Fatal编程技术网

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这会奏效,但当我看到这个问题时,我的问题是“为什么不使用参数化查询?”。