为什么以下sql查询导致无效的列名?

时间:2015-08-06 11:56:26

标签: c# sql sql-server

我有以下SQL语句:

"INSERT INTO OUTSTANDING(type, orderID) VALUES(data, @ID)";
为了更加清晰,

或用“”围绕单词

"INSERT INTO OUTSTANDING(type, orderID) VALUES(\"data\", @ID)";

现在如果我在我的c#代码中执行此操作,我会收到一条错误消息:

  

SqlException:类型的未处理异常   System.Data.dll中发生System.Data.SqlClient.SqlException:附加信息:列名称数据无效。

现在我想知道SQL如何将值内部的字符串解释为字符串。

2 个答案:

答案 0 :(得分:3)

试试这个

"INSERT INTO OUTSTANDING([Type], [OrderID]) VALUES('data', @ID)"

而不是

"INSERT INTO OUTSTANDING(type, orderID) VALUES(\"data\", @ID)"

答案 1 :(得分:3)

SQL-Server中的双引号是delimiters for identifiers names,而不是文本分隔符。

data周围使用双引号,告诉RDBMS它是对象的名称;改为使用单引号:

INSERT INTO OUTSTANDING(type,orderID) VALUES('data',@ID);