0

实际上,我创建了一个 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))

执行此代码后,我得到了

必须声明标量变量@

4

1 回答 1

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;
于 2012-08-24T15:36:57.033 回答