iOS中的SQLite select语句断言失败

时间:2012-10-03 13:46:08

标签: ios select sqlite

我在这个陈述中得到断言失败;

SELECT keyphrase_id, keyphrase, url, googlename FROM keyphrases left join domains on keyphrases.domain_id = domains.domain_id where domain_id = ? and ifnull(keytime,'') != ? order by keyphrase desc;

我通过SQL查询检查器运行它,并突出显示“!=”位,引用它是不正确的语法。这对我来说没有意义,因为我之前使用过这个陈述;

SELECT keyphrase_id, keyphrase, url, googlename FROM keyphrases left join domains on keyphrases.domain_id = domains.domain_id  where ifnull(keytime,'') != ? order by keyphrase desc;

这是我绑定where值的方式;

sqlite3_bind_int(selStmt, 1, domain_ID);

sqlite3_bind_text(selStmt, 2, [dateString UTF8String] , -1, SQLITE_TRANSIENT);

我根本无法解决这个问题,因为我正在改变的方法的唯一组成部分是SQL,它绝对与正在打开的数据库或语句为nil无关。言。

有人可以提出任何可能的原因吗?

1 个答案:

答案 0 :(得分:1)

如果您从任何显示错误的sqlite3函数调用中获得了返回代码,请再次拨打sqlite3_errmsg并查看错误消息,例如:

NSLog(@"%s err: %s", __FUNCTION__, sqlite3_errmsg(database));

这会告诉你什么是错的。

就我个人而言,我原本认为domain_id条款中对where的引用含糊不清,但sqlite3_errmsg会准确地告诉您发生了什么。