MSSQL Escape sp_executesql' /'在参数名称中

时间:2014-07-22 05:01:05

标签: c# sql sql-server

我知道,永远不要在表列名中添加特殊字符。现在是凌晨1点,我需要在明天上午开会。

我被迫生成一个具有以下格式的表:

Plant, Part, 01/01/2014, 01/02/2014, 01/03/2014....
01      123     100         123         1234

现在,我正在构建一个insert命令,然后在c#中使用ExecuteNonQuery命令执行。

1)加载Excel文件并将内容拉出并解析为以下版块 2)C#代码:(构建sql插件)

insertCommand.CommandText = "insert into dbo.tbl_SalesForecast ";

//Build parameter list
for (int x = 0; x < 31; x++ )
insertCommand.Parameters.AddWithValue("@[" + colNames[x] + ']' , info[x]);

insertCommand.Connection = connection;
insertCommand.Transaction = transaction;
insertCommand.ExecuteNonQuery();

3)当ExecuteNonQuery()运行时产生的SQL代码:(这是一团糟)

exec sp_executesql N'insert into dbo.tbl_SalesForecast ',N'@[Plant] nvarchar(1),@[Part] nvarchar(6),@[06/09/14] nvarchar(1),@[06/16/14] nvarchar(4),@[06/23/14] nvarchar(1),@[06/30/14] nvarchar(1),@[07/07/14] nvarchar(4),@[07/14/14] nvarchar(4),@[07/21/14] nvarchar(4),@[07/28/14] nvarchar(4),@[08/04/14] nvarchar(4),@[08/11/14] nvarchar(4),@[08/18/14] nvarchar(4),@[08/25/14] nvarchar(4),@[09/01/14] nvarchar(4),@[09/08/14] nvarchar(4),@[09/15/14] nvarchar(4),@[09/22/14] nvarchar(4),@[09/29/14] nvarchar(4),@[10/06/14] nvarchar(4),@[10/13/14] nvarchar(1),@[10/20/14] nvarchar(4),@[10/27/14] nvarchar(4),@[11/3/14] nvarchar(4),@[11/10/14] nvarchar(4),@[11/17/14] nvarchar(4),@[11/24/14] nvarchar(4),@[12/01/14] nvarchar(4),@[12/08/14] nvarchar(4),@[12/15/14] nvarchar(4),@[12/22/14] nvarchar(1)',@[Plant]=N'2',@[Part]=N'250019',@[06/09/14]=N'0',@[06/16/14]=N'2500',@[06/23/14]=N'0',@[06/30/14]=N'0',@[07/07/14]=N'1250',@[07/14/14]=N'1250',@[07/21/14]=N'1250',@[07/28/14]=N'1250',@[08/04/14]=N'1250',@[08/11/14]=N'1250',@[08/18/14]=N'1250',@[08/25/14]=N'1250',@[09/01/14]=N'1250',@[09/08/14]=N'1250',@[09/15/14]=N'1250',@[09/22/14]=N'1250',@[09/29/14]=N'1250',@[10/06/14]=N'1250',@[10/13/14]=N'0',@[10/20/14]=N'1250',@[10/27/14]=N'1250',@[11/3/14]=N'1250',@[11/10/14]=N'1250',@[11/17/14]=N'1250',@[11/24/14]=N'1250',@[12/01/14]=N'1250',@[12/08/14]=N'1250',@[12/15/14]=N'1250',@[12/22/14]=N'0'

以下是SQL Server中发生的事情:

Incorrect Syntax near 'Plant'.

这是一行:@ [Plant] = N'2'

因此,所有日期列都会出现此问题。 有没有办法逃避斜线?

我没有更好的方法来接近这个大气压。任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

我建议您为列使用01_01_2014, 01_02_2014, 01_03_2014名称。

或者使用[为列分配值。例如

Insert into YourTable(Plant, Part, [01/01/2014], [01/02/2014], [01/03/2014], ...)
Values (1, 123, 100, 123, 1234, ...)

您不能将[用于参数名称。