解析SQL查询时出错

时间:2013-12-24 20:11:08

标签: c# sql sql-server-ce

好的所以我只是想把最后一条记录输入到表中并从中获取一个特定的值。我一直在网上寻找一个可行的方法,以满足我的需求,但我尝试的一切都很短......

我一直在

  

解析查询时出错。 [令牌行号=,令牌   line offset =,token in error =]

我最常见的查询是使用ORDER BY语句。

我的表格的键是“索引”而不是“ID”;我一直在尝试像

这样的简单查询
SELECT *
FROM   Departments
WHERE  Valid = @validation
ORDER  BY Index ASC 

但是我收到错误,指出“令牌错误=索引”

现在我有一个我需要运行的查询,它选择表中的最后一条记录并获取它的JobID,它与Index不同。所以我尝试了我的尝试和真实的

SELECT TOP (1) *
FROM   TableName
ORDER  BY Index DESC 

通过这种方式,我也可以获得其他数据。但是我得到了相同的错误代码。

所以我试过

SELECT MAX(Index)
FROM   TableName 

同样的错误。

无论我尝试什么,它都不想通过索引进行选择,索引设置为主键,自动增量等....

1 个答案:

答案 0 :(得分:5)

我完全从这里开始拍摄,但Index在SQL中是reserved word

来自SQL Server compact documentation

  

如果标识符不符合规则,则必须对其进行分隔   对于常规标识符的格式或保留关键字的格式   用作标识符

+----------------------------+---------------------------------+
|         Delimiter          | Usage in SQL Server Compact 4.0 |
+----------------------------+---------------------------------+
| Brackets [ ]               | Not supported                   |
| Double quotation marks " " | Noncompliant identifiers:       |
| Single quotation marks ' ' | String data values              |
+----------------------------+---------------------------------+

因此,我建议您对查询执行以下操作:

SELECT *
FROM   Departments
WHERE  Valid = @validation
ORDER  BY "Index" ASC 

""周围添加Index可以解决您的问题。