ios - iOS 中的 SQLite select 语句断言失败

标签 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;

这就是我绑定(bind) where 值的方式;

sqlite3_bind_int(selStmt, 1, domain_ID);

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

我根本无法解决这个问题,这绝对与打开的数据库或执行时的语句为 nil 等无关,因为我正在更改的方法的唯一组件是SQL语句。

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

最佳答案

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

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

这会告诉你哪里出了问题。

就我个人而言,我认为 where 子句中对 domain_id 的引用是模棱两可的,但是 sqlite3_errmsg 会准确地告诉你是什么继续。

关于ios - iOS 中的 SQLite select 语句断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12709867/

相关文章:

java - 从 SQLite 数据库中删除条目

SQLite3 "forgets"使用外键

iOS7-iPhone 呈现 View Controller - UIPickerView

ios - AvPlayer 无法在设备中播放声音

iOS - 在我的应用程序中打开后复制文件

php - 如何在 mysql 中使用 where 子句选择特定行?

mysql - 从一个表中选择所有内容,如果存在,则在另一表上获取更多详细信息

ios - 完全禁用 Swift 按下 'backspace'

c - 对近 80 个或更多客户端使用 select 或多线程?

java - SQLite 检查列是否存在