Iphone 在Objective-C中的varchar字段上使用WHERE语句的sqlite问题

Iphone 在Objective-C中的varchar字段上使用WHERE语句的sqlite问题,iphone,objective-c,sqlite,Iphone,Objective C,Sqlite,我有一个sql语句SELECT*FROM Language WHERE LanguageCode=?其中LanguageCode是一个varchar(2) 当我对该语句使用sqlite3-prepare-v2时,我得到了SQLITE_错误,但如果我使用SELECT*FROM Language WHERE LanguageID=?WHERE LanguageID是主键数字标识字段,则该语句编译得很好 使用WHERE语句通过varchar字段过滤是否存在任何问题 谢谢我认为通过使用varchar字段

我有一个sql语句
SELECT*FROM Language WHERE LanguageCode=?
其中LanguageCode是一个varchar(2)

当我对该语句使用sqlite3-prepare-v2时,我得到了SQLITE_错误,但如果我使用
SELECT*FROM Language WHERE LanguageID=?
WHERE LanguageID是主键数字标识字段,则该语句编译得很好

使用WHERE语句通过varchar字段过滤是否存在任何问题


谢谢

我认为通过使用varchar字段,where语句应该没有问题。
可能您在传递参数时遇到问题。尝试打印到NSLog并查看执行的语句,然后在sqlite命令提示符下执行该语句,以查看是否有返回值。

确定您的?用单引号括起来


SQLite还应该给您一个错误字符串,告诉您出现错误的原因。

尝试调用
SQLite 3\u errmsg
并检查从该调用返回的错误字符串。它应该会给你一个更详细的信息,告诉你哪里出了问题


克劳斯

感谢大家在日志上打印答案sqlite3_errmsg帮助我找出实际发生的情况是我更改了数据库模式(添加了列语言代码),并且新文件没有在模拟器上更新,我只是从模拟器中删除了应用程序,然后再次运行该应用程序。