Foo
我正在从C#代码执行此过程。成功创建表,然后抛出异常,
无效的列名称'VisitedClothesKids'
无效
列名称“InitialCount”
请帮忙!非常感谢:)
答案 0 :(得分:2)
问题是串联的字符串本身没有将值放在引号中:
values('+@VisitedClothesKids+','+@InitialCount+')'
变为
values(VisitedClothesKids,0)'
当你想要它
时values('VisitedClothesKids','0')'
我们还应警告您,您在此处使用的技术对SQL注入是开放的,应该避免使用。
答案 1 :(得分:0)
要解决此类问题,您必须查看正在执行的语句。例如,如果您这样做(为表名传递“MyData”):
PRINT @AddRecord;
EXEC(@AddRecord);
您会看到以下内容作为输出:
insert into MyData_Table(UserActivityData,DataValue)
values(VisitedClothesKids,0)'
哪个失败,因为SQL不知道“VisitedClothesKids”是什么。您希望语句为
insert into MyData_Table(UserActivityData,DataValue)
values('VisitedClothesKids',0)'
用引号指定文字字符串。为此,请修改“build语句:
SET @AddRecord = 'insert into '+@Username+'_Table(UserActivityData,DataValue)
values('''+@VisitedClothesKids+''','+@InitialCount+')'
在此上下文中,SQL将解释(或“转义”)两个单引号''
作为单引号'
。