实际上我创建了一个SQL Server表,其列名包含@#$$%Id%^$#
等特殊字符,我创建了一个插入查询来插入值,如:
Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#)
之后将参数值传递为:
SqlCommand cmd = new SqlCommand (“Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#) ”);
cmd.Parameters.Add(new SqlParameter (“(@@#$$%Id%^$#”, ParameterValue))
执行此代码后,我得到了
必须声明标量变量@
答案 0 :(得分:4)
这永远不会奏效:
Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#)
除非您以这种方式声明变量:
DECLARE @@#$$%Id%^$# INT = 1;
但是这不是有效的语法。所以也许您打算将整个值作为字符串插入:
Insert into MyTable ([@#$$%Id%^$#]) values ('@@#$$%Id%^$#')
你在字符串中使用前导@是令人困惑的 - 你是说这是一个参数指定吗?这对我来说很好:
CREATE TABLE dbo.MyTable([@#$$%Id%^$#] VARCHAR(255));
INSERT dbo.MyTable([@#$$%Id%^$#]) VALUES('@@#$$%Id%^$#');
DROP TABLE dbo.MyTable;