简单亚音速示例的SQL错误

时间:2011-01-31 20:47:38

标签: sql mysql subsonic3 mysql-error-1064

我正在测试SubSonic,但我坚持第一个简单的例子。我有一个新闻表,我正在尝试获取10个最新结果:

var newsItems = News.GetPaged("datecreated", 0, 10);

这会导致此错误:

[MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10, 10' at line 6]

生成的SQL:

SELECT `newsid`, `datecreated`, `headline`, `body`, `link`, `picture`, `linkinfo`, `postedby`, `comments`, `category` FROM news  ORDER BY newsid DESC LIMIT -10,10

手动修复sql很容易,但我不知道如何让SubSonic自动为查询添加正确的LIMIT。有什么指针吗?

1 个答案:

答案 0 :(得分:0)

限制应该是从0开始的正整数。-10,10不是

  

http://dev.mysql.com/doc/refman/5.0/en/select.html

- LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。

生成的SQL应该是

SELECT `newsid`, `datecreated`, `headline`, `body`, `link`, `picture`,
    `linkinfo`, `postedby`, `comments`, `category`
FROM news  ORDER BY newsid DESC LIMIT 10;

我认为Subsonic你需要这个

var newsItems = News.GetPaged("datecreated", 1, 10);