[WHERE列=值,仅适用于INTEGER值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[WHERE列=值,仅适用于INTEGER值相关的知识,希望对你有一定的参考价值。
我在c ++项目上使用sqlite,但是当我在具有TEXT值的列上使用WHERE时遇到问题
我创建了一个sqlite数据库:
CREATE TABLE User( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(24))
[当我尝试获取具有VARCHAR值的列的值时,它不起作用,并在sqlite3_step之后向我返回STATUS_CODE 101:
int res = 0;
sqlite3_stmt *request;
char *sqlSelection = (char *)"SELECT * FROM User WHERE name='bob' ";
int id = 0;
res = sqlite3_prepare_v2(db, sqlSelection, strlen(sqlSelection), &request, NULL);
if (!res){
while (res == SQLITE_OK || res == SQLITE_ROW){
res = sqlite3_step(request);
if (res == SQLITE_OK || res == SQLITE_ROW ){
id = sqlite3_column_int(request, 0);
printf("User exist %i
",id);
}
}
sqlite3_finalize(request);
我也尝试过使用LIKE,但它也不起作用
SELECT * FROM User WHERE name LIKE '%bob%'
但是当我执行相同的代码但需要一个INTERGER值时
SELECT * FROM User WHERE id=1
工作正常。
在用于SQLite的DB浏览器中,所有请求都可以正常工作。
答案
为了解决该问题,我搜索了状态码101的含义。另一答案
解决方案是用TEXT替换VARCHAR字段。在WHERE之后使用sqlchar for c ++时似乎不管理VARCHAR字段]以上是关于[WHERE列=值,仅适用于INTEGER值的主要内容,如果未能解决你的问题,请参考以下文章
此错误代码仅适用于 FDC Omaha 上的商家。商户号字段提交的值无效