Почему некоторые функции SQLite основаны на нуле, а некоторые — на одном

#sqlite #parameters

#sqlite #параметры

Вопрос:

Параметр индекса для sqlite3_column_* основан на нуле, а sqlite3_bind_* основан на единице.

Есть ли причина для этого?

Ответ №1:

Я понял.

Виноват sqlite3_bind_parameter_index:

Возвращает индекс параметра SQL с учетом его имени. Возвращаемое значение индекса подходит для использования в качестве второго параметра sqlite3_bind(). Возвращается ноль, если не найден соответствующий параметр.

Итак, поехали. Странный выбор, учитывая, что они, похоже, используют signed int для индекса, что означает, что они могли бы использовать -1 для указания несоответствия. Возможно, причина этого более историческая, SQLite существует уже некоторое время…