2012-08-24 147 views
0

其实我已经创建了包含类似@#$$%Id%^$#特殊字符的列名SQL Server表,我已经创建了一个插入查询,插入值,如:与在SQL Server表列特殊字符处理命名

Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#) 

之后传递的参数值:

SqlCommand cmd = new SqlCommand (“Insert into MyTable ([@#$$%Id%^$#]) values (@@#$$%Id%^$#) ”); 
cmd.Parameters.Add(new SqlParameter (“(@@#$$%Id%^$#”, ParameterValue)) 

执行此代码后,我得到了

必须声明标量变量@

+0

不要在Word中编辑并粘贴在这里(聪明的引号不是那么聪明)。 – Oded

+0

你为什么这样做? – podiluska

回答

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;