Ответ 1
В документации SQLite3:
http://www.sqlite.org/datatype3.html
Большинство механизмов СУБД SQL (каждый движок базы данных SQL, отличный от SQLite, насколько нам известно) использует статичную, жесткую типизацию. Со статическим типизация, тип данных значения определяется его контейнером - конкретный столбец, в котором хранится значение.
SQLite использует более общую систему динамического типа. В SQLite тип данных значения связан с самим значением, а не с его контейнер. Система динамического типа SQLite обратная совместимость с более распространенными системами статического типа других двигателей баз данных в смысл, что оператор SQL, который работает на статически типизированных базах данных должен работать одинаково в SQLite. Однако динамический ввод в SQLite позволяет делать то, что невозможно в традиционных жестко типизированные базы данных.
Итак, в MS Sql Server (например), "int" == "integer" == 4 bytes/32 bits.
Напротив, "целое число" SqlLite может содержать все, что вы вложили в него: от 1-байтового char до 8-байтового длинного.
В приведенной выше ссылке перечислены все типы и дается более подробная информация о Sqlite "affinity".
Интерфейс C/С++, на который вы ссылаетесь, должен работать с сильно типизированными языками.
Итак, есть два API: sqlite3_column_int(), max 4-байтовый; и sqlite3_column_int64()