2012-03-26 89 views
0

我似乎无法找出为什么这种说法是给我的问题:SQL [错误]:解析查询时发生错误。 [令牌行号= 1,令牌行偏移= 44,令牌错误= - ]

sqlCommand.CommandText = @"INSERT INTO Fulfilled_Shipments_Data (amazon-order-id) VALUES " + lines[0]; 

我得到错误:

[Error]: There was an error parsing the query. [ Token line number = 1,Token line offset = 44,Token in error = - ] 

哪个指向 - in amazon-order-id。

我从Visual Studio中执行SQL时遇到同样的错误,但是我可以使用该列名称查询现有数据。

我相信这对于一个SQL大师来说是一件小事,但我正在抓我的头,所以任何帮助表示赞赏!

+0

可能想尝试'VALUES( “+线[0] +”)“' – 2012-03-26 16:06:17

回答

5

数据类型你需要逃避amazon-order-id因为它有负

sqlCommand.CommandText = @"INSERT INTO Fulfilled_Shipments_Data (amazon-order-id) VALUES ('" + lines[0] + "')"; 

OR

sqlCommand.CommandText = @"INSERT INTO Fulfilled_Shipments_Data (amazon-order-id) VALUES (" + lines[0] + ")"; 

(短跑)标志。它应该是[amazon-order-id]

...INSERT INTO Fulfilled_Shipments_Data ([amazon-order-id])... 

此外,值应在括号:VALUES (" + lines[0]+")";

最终版本:

sqlCommand.CommandText = @"INSERT INTO 
Fulfilled_Shipments_Data ([amazon-order-id]) 
VALUES (" + lines[0]+")"; 
+0

,对于第一个错误的原理,但是包含在线路中的数据[0]包含破折号也是如此我试图通过同样的方法转义它,但得到一个错误:列名无效[节点名称(如果有)=,列名= S01-8XXXXXX-XXXXXXX – 2012-03-26 16:14:05

+0

[]用于转义列如果lines [0]是一个字符串,则应将其放在单引号中:'... VALUES(''+ lines [0] +'')“'。您还必须确保'lines [0]'没有任何特殊字符,并在需要时进行转义 – a1ex07 2012-03-26 16:16:13

+0

而不是将值直接放入查询中,请使用参数(http://msdn.microsoft.com/zh-cn/ library/system.data.sqlclient.sqlcommand.parameters.aspx)。这样你就不必手动转义值。 – a1ex07 2012-03-26 16:19:15

2

我觉得您的SQL语法应该是这样的:这取决于amazon-order-id

1

尝试这些。

sqlCommand.CommandText = @"INSERT INTO Fulfilled_Shipments_Data (amazon-order-id) VALUES ('" + lines[0]+"')"; 

OR

sqlCommand.CommandText = @"INSERT INTO Fulfilled_Shipments_Data ([amazon-order-id]) VALUES ('" + lines[0]+"')";