5

在 sqlite3.h 的评论中:

对于 sqlite3_bind_ ,* ^如果需要,可以使用 ** [sqlite3_bind_parameter_index()] API 查找命名参数的索引。^“?NNN”参数的索引**是NNN的值。** ^NNN 值必须介于1和 [sqlite3_limit()]之间

for sqlite3_column_* ** ^结果集中最左边的列的索引为 0。 ** ^结果中的列数可以使用 ** [sqlite3_column_count()] 确定。

为什么会有这么奇怪的矛盾?

4

1 回答 1

5

没有奇怪的不一致。

这些sqlite3_bind_*()函数将值与 printf 样式的格式说明符(SQLite3 自己的术语中的“主机参数名称”)相关联。具有与函数参数类似的功能,它符合从 1 开始编号的约定(“第一个参数”,“第二个参数”,...)。

相似之处:在 POSIX C 中,该printf()函数接受可以使用%N$c语法修改转换顺序的格式字符串,其中c是实际的转换说明符字符或 char 序列,并且N从 1 开始的数字。

但是,这些列不是类似参数的实体。它们是可索引数据结构中的项目。例如,它们更类似于数组的元素,这就是为什么从零开始索引它们是有意义的。

于 2013-04-12T05:04:42.940 回答