首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlite3_bind_parameter_index返回0?

sqlite3_bind_parameter_index返回0?
EN

Stack Overflow用户
提问于 2011-05-22 02:32:44
回答 1查看 2.2K关注 0票数 0

count返回参数的计数,并且是正确的。但是,索引返回0。有什么想法吗?

代码语言:javascript
复制
sqlite3 *database;
sqlite3_stmt *updateStmt;
int ID;
const char *sql;

sql = "update User set Name = ? , Dev = ?,ActiveLevel = ? Where _id = ?";


if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK)
  NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database));

NSLog(@"count %d",sqlite3_bind_parameter_count(updateStmt));

NSLog(@"Index %d",sqlite3_bind_parameter_index(updateStmt,"ActiveLevel"));
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-22 02:48:59

fine manual

int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);

返回给定名称的SQL参数的索引。

而对于parameters

如果问号后面没有数字,则会创建一个数字比已分配的最大参数编号大1的参数。

..。

:AAAA

后跟标识符名的冒号表示命名为的参数的位置,该参数的名称为:AAAA

第二节着重介绍我的观点。

您的SQL根本没有任何命名参数,只有普通的老式占位符。参数名称是占位符的名称(:AAAA),而不是相关列的名称;请记住,您可以在无法自动派生名称的位置使用占位符,因此您必须自己命名它们。

如果您希望使用ActiveLevel作为命名参数,那么您的SQL应该如下所示:

代码语言:javascript
复制
update User set Name = ? , Dev = ?, ActiveLevel = :ActiveLevel Where _id = ?

而且,为了保持一致性,您可能希望将其他占位符(?)替换为命名参数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6083654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档