count返回参数的计数,并且是正确的。但是,索引返回0。有什么想法吗?
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"));发布于 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应该如下所示:
update User set Name = ? , Dev = ?, ActiveLevel = :ActiveLevel Where _id = ?而且,为了保持一致性,您可能希望将其他占位符(?)替换为命名参数。
https://stackoverflow.com/questions/6083654
复制相似问题